Hey!
regarding the "nm" problem, use ecl from the repository. This is already fixed regression. If it still doesn't build, please let us know.
Best regards, Daniel
Chris Gorman writes:
Hello All,
I'm new to ecl and am just hacking around with my end goal being a port of maxima, which runs on lisp, to an android device.
I've been informed of the need to build ecl with the apple gcc, and have turned off macports gcc, thanks for the tip.
To build the host version of ecl we pass -m32 to CFLAGS and LDFLAGS as well as setting the environment variable ABI=32. This causes my build to fail on win32.S, and my assembly is too poor to debug this. The output from the build follows.
/bin/sh ./libtool --mode=compile gcc -fPIC -fno-common -DHAVE_CONFIG_H -I. -I/Users/chrisgorman/src/ecl-16.1.2/src/libffi -I. -I/Users/chrisgorman/src/ecl-16.1.2/src/libffi/include -Iinclude -I/Users/chrisgorman/src/ecl-16.1.2/src/libffi/src -I. -I/Users/chrisgorman/src/ecl-16.1.2/src/libffi/include -Iinclude -I/Users/chrisgorman/src/ecl-16.1.2/src/libffi/src -m32 -g -O2 -fPIC -fno-common -D_THREAD_SAFE -MT src/x86/win32.lo -MD -MP -MF $depbase.Tpo -c -o src/x86/win32.lo /Users/chrisgorman/src/ecl-16.1.2/src/libffi/src/x86/win32.S &&\ mv -f $depbase.Tpo $depbase.Plo libtool: compile: gcc -fPIC -fno-common -DHAVE_CONFIG_H -I. -I/Users/chrisgorman/src/ecl-16.1.2/src/libffi -I. -I/Users/chrisgorman/src/ecl-16.1.2/src/libffi/include -Iinclude -I/Users/chrisgorman/src/ecl-16.1.2/src/libffi/src -I. -I/Users/chrisgorman/src/ecl-16.1.2/src/libffi/include -Iinclude -I/Users/chrisgorman/src/ecl-16.1.2/src/libffi/src -m32 -g -O2 -fPIC -fno-common -D_THREAD_SAFE -MT src/x86/win32.lo -MD -MP -MF src/x86/.deps/win32.Tpo -c /Users/chrisgorman/src/ecl-16.1.2/src/libffi/src/x86/win32.S -o src/x86/win32.o /Users/chrisgorman/src/ecl-16.1.2/src/libffi/src/x86/win32.S:1325:section difference relocatable subtraction expression, ".LFE5" minus ".LFB5" using a symbol at the end of section will not produce an assembly time constant /Users/chrisgorman/src/ecl-16.1.2/src/libffi/src/x86/win32.S:1325:use a symbol with a constant value created with an assignment instead of the expression, L_const_sym = .LFE5 - .LFB5 /Users/chrisgorman/src/ecl-16.1.2/src/libffi/src/x86/win32.S:1317:section difference relocatable subtraction expression, ".LEFDE5" minus ".LASFDE5" using a symbol at the end of section will not produce an assembly time constant /Users/chrisgorman/src/ecl-16.1.2/src/libffi/src/x86/win32.S:1317:use a symbol with a constant value created with an assignment instead of the expression, L_const_sym = .LEFDE5 - .LASFDE5 /Users/chrisgorman/src/ecl-16.1.2/src/libffi/src/x86/win32.S:unknown:missing indirect symbols for section (__IMPORT,__jump_table) make[3]: *** [src/x86/win32.lo] Error 1 make[2]: *** [install-recursive] Error 1 make[1]: *** [libeclffi.a] Error 2 make: *** [all] Error 2
If I change the build command and remove the 32 bit switches and environment settings, the build will succeed.
I then tried cross compile the android binaries following the instructions in INSTALL. I can only get the configure script to run half way. It dies as...
./configure --host=arm-linux-androideabi --prefix=`pwd`/ecl-android --with-cross-config=`pwd`/src/util/android.cross_config --disable-soname Switching to directory `build' to continue configuration. checking build system type... i386-apple-darwin10.8.0 checking host system type... arm-unknown-linux-androideabi checking for arm-linux-androideabi-gcc... /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... yes checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc accepts -g... yes checking for /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc option to accept ISO C89... none needed checking whether we are using the GNU C++ compiler... yes checking whether /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-g++ accepts -g... yes checking how to run the C preprocessor... /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -E checking for arm-linux-androideabi-ranlib... /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-ranlib checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... yes checking for arm-linux-androideabi-ranlib... (cached) /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-ranlib checking for arm-linux-androideabi-ar... /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-ar checking for etags... etags checking for ld flags when building shared libraries... -shared checking for required libraries... -ldl checking for architecture... ARM checking for software type... android / checking for __thread local data... yes checking for install-info... /opt/local/bin/install-info checking for __gmpz_init in -lgmp... no configure: Configuring included GMP library: configure: WARNING: you should use --build, --host, --target checking build system type... i386-apple-darwin10.8.0 checking host system type... arm-unknown-linux-androideabi checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for arm-linux-androideabi-strip... arm-linux-androideabi-strip checking for a thread-safe mkdir -p... /Users/chrisgorman/src/ecl-16.1.2/src/gmp/install-sh -c -d checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether to enable maintainer-specific portions of Makefiles... no checking ABI=standard checking whether /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC is gcc... yes checking compiler /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DANDROID -DPLATFORM_ANDROID -DUSE_GET_STACKBASE_FOR_MAIN -DIGNORE_DYNAMIC_LOADING -DAO_REQUIRE_CAS -g -O2 -fPIC ... yes checking whether ARM gcc unsigned division works... yes checking for arm-linux-androideabi-gcc... /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... yes checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC accepts -g... yes checking for /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC option to accept ISO C89... none needed checking whether /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC understands -c and -o together... yes checking for /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC option to accept ISO C99... -std=gnu99 checking for /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC -std=gnu99 option to accept ISO Standard C... (cached) -std=gnu99 checking how to run the C preprocessor... /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC -std=gnu99 -E checking build system compiler /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC -std=gnu99... no checking build system compiler /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC -std=gnu99 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DANDROID -DPLATFORM_ANDROID -DUSE_GET_STACKBASE_FOR_MAIN -DIGNORE_DYNAMIC_LOADING -DAO_REQUIRE_CAS -g -O2 -fPIC ... no checking build system compiler cc... yes checking for build system preprocessor... cc -E checking for build system executable suffix... checking for build system compiler math library... -lm checking for grep that handles long lines and -e... /opt/local/bin/grep checking for egrep... /opt/local/bin/grep -E using ABI="standard" CC="/Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC -std=gnu99" CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DANDROID -DPLATFORM_ANDROID -DUSE_GET_STACKBASE_FOR_MAIN -DIGNORE_DYNAMIC_LOADING -DAO_REQUIRE_CAS -g -O2 -fPIC" CPPFLAGS=" " MPN_PATH=" arm generic" checking for arm-linux-androideabi-ar... /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-ar checking for BSD- or MS-compatible name lister (nm)... nm checking the name lister (nm) interface... BSD nm checking how to print strings... printf checking for a sed that does not truncate output... /opt/local/bin/gsed checking for fgrep... /opt/local/bin/grep -F checking for ld used by /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC -std=gnu99... /Users/chrisgorman/src/toolchain-r9d/arm-linux-androideabi/bin/ld checking if the linker (/Users/chrisgorman/src/toolchain-r9d/arm-linux-androideabi/bin/ld) is GNU ld... yes checking whether ln -s works... yes checking the maximum length of command line arguments... 196608 checking how to convert i386-apple-darwin10.8.0 file names to arm-unknown-linux-androideabi format... func_convert_file_noop checking how to convert i386-apple-darwin10.8.0 file names to toolchain format... func_convert_file_noop checking for /Users/chrisgorman/src/toolchain-r9d/arm-linux-androideabi/bin/ld option to reload object files... -r checking for arm-linux-androideabi-objdump... objdump checking how to recognize dependent libraries... pass_all checking for arm-linux-androideabi-dlltool... dlltool checking how to associate runtime and link libraries... printf %s\n checking for arm-linux-androideabi-ar... (cached) /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-ar checking for archiver @FILE support... @ checking for arm-linux-androideabi-strip... (cached) arm-linux-androideabi-strip checking for arm-linux-androideabi-ranlib... /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-ranlib checking command to parse nm output from /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC -std=gnu99 object... failed checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for arm-linux-androideabi-mt... no checking for mt... no checking if : is a manifest tool... no checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC -std=gnu99 supports -fno-rtti -fno-exceptions... no checking for /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC -std=gnu99 option to produce PIC... -fPIC -DPIC checking if /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC -std=gnu99 PIC flag -fPIC -DPIC works... yes checking if /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC -std=gnu99 static flag -static works... yes checking if /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC -std=gnu99 supports -c -o file.o... yes checking if /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC -std=gnu99 supports -c -o file.o... (cached) yes checking whether the /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-gcc -fPIC -std=gnu99 linker (/Users/chrisgorman/src/toolchain-r9d/arm-linux-androideabi/bin/ld) supports shared libraries... yes checking dynamic linker characteristics... Android linker checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... no checking whether to build static libraries... yes checking how to run the C++ preprocessor... /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-g++ -E checking whether the /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-g++ linker (/Users/chrisgorman/src/toolchain-r9d/arm-linux-androideabi/bin/ld) supports shared libraries... yes checking for /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-g++ option to produce PIC... -DPIC checking if /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-g++ PIC flag -DPIC works... yes checking if /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-g++ static flag works... yes checking if /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-g++ supports -c -o file.o... yes checking if /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-g++ supports -c -o file.o... (cached) yes checking whether the /Users/chrisgorman/src/toolchain-r9d/bin/arm-linux-androideabi-g++ linker (/Users/chrisgorman/src/toolchain-r9d/arm-linux-androideabi/bin/ld) supports shared libraries... yes checking dynamic linker characteristics... Android linker checking how to hardcode library paths into programs... immediate checking for ANSI C header files... (cached) yes checking whether time.h and sys/time.h may both be included... yes checking float.h usability... yes checking float.h presence... yes checking for float.h... yes checking langinfo.h usability... no checking langinfo.h presence... no checking for langinfo.h... no checking locale.h usability... yes checking locale.h presence... yes checking for locale.h... yes checking nl_types.h usability... no checking nl_types.h presence... no checking for nl_types.h... no checking whether ungetc is declared... yes checking return type of signal handlers... void checking for intmax_t... yes checking for long double... yes checking for long long... yes checking for ptrdiff_t... yes checking for quad_t... no checking for uint_least32_t... yes checking for preprocessor stringizing operator... yes checking for working volatile... yes checking whether <stdarg.h> exists and works... yes checking whether gcc __attribute__ ((const)) works... yes checking whether gcc __attribute__ ((malloc)) works... yes checking whether gcc __attribute__ ((mode (XX))) works... yes checking whether gcc __attribute__ ((noreturn)) works... yes checking for inline... inline checking for cos in -lm... yes checking for working alloca.h... yes checking for alloca (via gmp-impl.h)... yes checking how to allocate temporary memory... alloca checking whether byte ordering is bigendian... no checking format of `double' floating point... IEEE little endian checking for localeconv... no checking for memset... yes checking for nl_langinfo... no checking for obstack_vprintf... no checking for raise... yes checking for strchr... yes checking for strtol... yes checking for suitable m4... m4 checking if m4wrap produces spurious output... no checking how to switch to text section... .text checking how to switch to data section... .data checking for assembler label suffix... : checking for assembler global directive... .globl checking for assembler global directive attribute... checking if globals are prefixed by underscore... unknown configure: WARNING: +---------------------------------------------------------- configure: WARNING: | Cannot determine global symbol prefix. configure: WARNING: | nm output doesn't contain a global data symbol. configure: WARNING: | Will proceed with no underscore. configure: WARNING: | If this is wrong then you'll get link errors referring configure: WARNING: | to ___gmpn_add_n (note three underscores). configure: WARNING: | In this case do a fresh build with an override, configure: WARNING: | ./configure gmp_cv_asm_underscore=yes configure: WARNING: +---------------------------------------------------------- checking how to switch to read-only data section... .section .rodata checking for assembler .type directive... .type $1,#$2 checking for assembler .size directive... .size $1,$2 checking for assembler local label prefix... L checking for assembler byte directive... .byte checking how to define a 32-bit word... configure: error: cannot determine how to define a 32-bit word configure: error: Failed to configure the GMP library.
If anyone has clues as to how to get this to work on my old clunker, please let me know.
Thanks
Chris Gorman