[Ecls-list] static build on FreeBSD 5.5 failed

fumi tscompor at gmail.com
Sat Jun 9 03:51:20 UTC 2007


Hello,

I have just compiled the latest sources from CVS on FreeBSD 5.5
and encountered some problems.

I tried to compile several times, each time with command lines:

$ rm -r build; rm Makefile
$ ./configure --disable-shared; gmake


First try failed at a line in build/Makefile.
I got the following messages and modified src/Makefile.in.


cp /usr/home/nimda/ecl/src/h/*.h ecl/
if grep 'undef ENABLE_DLOPEN' ecl/config.h; then cp c/external.h h; fi
/* #undef ENABLE_DLOPEN */
cp: c/external.h: No such file or directory
gmake[1]: *** [ecl/external.h] Error 1
gmake[1]: Leaving directory `/usr/home/nimda/ecl/build'
gmake: *** [all] Error 2


Index: src/Makefile.in
===================================================================
RCS file: /project/ecl/cvsroot/ecl/src/Makefile.in,v
retrieving revision 1.70
diff -u -r1.70 Makefile.in
--- src/Makefile.in	4 Jun 2007 18:43:32 -0000	1.70
+++ src/Makefile.in	9 Jun 2007 02:50:58 -0000
@@ -62,7 +62,7 @@
 	sed 's,__declspec(dllimport),,g' $(top_srcdir)/h/external.h > $@
 ecl/external.h: c/ecl/external.h c/ecl/external.h
 	cp $(srcdir)/h/*.h ecl/
-	if grep 'undef ENABLE_DLOPEN' ecl/config.h; then cp c/external.h h; fi
+	if grep 'undef ENABLE_DLOPEN' ecl/config.h; then cp c/ecl/external.h h; fi
 
 bin/ecl$(EXE): ecl_min$(EXE) compile.lsp sysfun.lsp ecl/external.h BUILD-STAMP
 	if [ -f CROSS-COMPILER ]; then \


Second try failed at build/compile.lsp.
The messages were:


;;; Note: Invoking external command:
;;; gcc -o "/usr/home/nimda/ecl/build/bin/ecl" -L"/usr/local/lib/ecl/" "/usr/home/nimda/ecl/build/ECLINITmXhTeX.o" "-lsockets" "-lcmp" "-L./"     libecl.a -leclgmp -leclgc    -lm  

/usr/home/nimda/ecl/build/ECLINITmXhTeX.o(.text+0x36): In function `init_ECL':
/usr/home/nimda/ecl/build/ECLINITmXhTeX.c:41: undefined reference to `init_lib_ECL_SOCKETS'
/usr/home/nimda/ecl/build/ECLINITmXhTeX.o(.text+0x49):/usr/home/nimda/ecl/build/ECLINITmXhTeX.c:42: undefined reference to `init_lib_ECL_CMP'
LAMBDA: Too many arguments to function CONTINUE.
Broken at TOP-LEVEL.No restarts available.
Top level.
SI> 
sed -e 's, at libdir\\@,/usr/local/lib/,' \
    -e 's, at includedir\\@,/usr/local/include/,' bin/ecl-config.pre > bin/ecl-config
gmake[1]: Leaving directory `/usr/home/nimda/ecl/build'


I found that build/libcmp.a contained init_lib_CMP and modified
src/cmp/cmpmain.lsp.


$ nm build/libcmp.a | grep init_lib
00000000 T init_lib_CMP


Index: src/cmp/cmpmain.lsp
===================================================================
RCS file: /project/ecl/cvsroot/ecl/src/cmp/cmpmain.lsp,v
retrieving revision 1.113
diff -u -r1.113 cmpmain.lsp
--- src/cmp/cmpmain.lsp	3 Jun 2007 17:41:54 -0000	1.113
+++ src/cmp/cmpmain.lsp	9 Jun 2007 02:51:06 -0000
@@ -216,7 +216,7 @@
 		  c)
 		 (t
 		  #\p)))
-	 (disambiguation (c)
+	 (disambiguation (kind)
 	   (case kind
 	     (:object "")
 	     ((:fasl :fas) "fas_")
@@ -355,7 +355,7 @@
       (etypecase item
         (symbol
          (push (system-ld-flag item) ld-flags)
-         (push (init-function-name item :kind :lib) submodules))
+         (push (init-function-name item :kind :lib :prefix nil) submodules))
         ((or string pathname)
 	 (let* ((pathname (parse-namestring item))
 		(kind (guess-kind pathname)))


Third try was successful.

I'm not sure if I did something wrong or these are bugs.
Please tell me if there is a better way.




More information about the ecl-devel mailing list