Subject: | ld error during make on AIX 5.2 SOLVED |
This is a SOLVED bug. I'm just posting this to help others who may have the same problem.
I'm trying to install Net::SFTP on an AIX 5.2 system with perl 5.8.0 and gmp-4.1.4 installed. I'm also using IBM's VisualAge C++ 5.0.2.0. Almost all of the 20+ prerequisites built and installed fine, EXCEPT Math-GMP-2.04 (and Math-Pari).
First, I had to modify the Makefile.PL so that it could see the gmp libraries by adding "-L/usr/local/lib" as below:
'LIBS' => ['-L/usr/local/lib -lgmp'], # e.g., '-lm'
Then, I had to change the following line in GMP.c and GMP.xs from:
#include "gmp.h"
to:
#include </usr/local/include/gmp.h>
Finally, the third roadblock:
Show quoted text
-----START SNIPPET-----
# make
cc_r -c /usr/local/include -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong -O -DVERSION=\"2.04\" -DXS_VERSION=\"2.04\" "-I/usr/opt/perl5/lib/5.8.0/aix-thread-multi/CORE" GMP.c
Running Mkbootstrap for Math::GMP ()
chmod 644 GMP.bs
rm -f blib/arch/auto/Math/GMP/GMP.so
LD_RUN_PATH="/usr/local/lib" ld -bhalt:4 -bM:SRE -bI:/usr/opt/perl5/lib/5.8.0/aix-thread-multi/CORE/perl.exp -bE:GMP.exp -bnoentry -lpthreads -lc_r GMP.o -o blib/arch/auto/Math/GMP/GMP.so -L/usr/local/lib -lgmp
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_init
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_sqrt
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_tstbit
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_init_set
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_fac_ui
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_ior
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_xor
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_and
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_fib_ui
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_gcd
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_pow_ui
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_jacobi
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_cmp
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_mod
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_tdiv_qr
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_fdiv_q
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_mul
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_sub
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_add
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_fdiv_r_2exp
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_fdiv_r
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_powm
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_fdiv_q_2exp
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_mul_2exp
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_get_si
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_add_ui
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_get_ui
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_sizeinbase
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_get_str
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_clear
ld: 0711-317 ERROR: Undefined symbol: .__gmpz_init_set_str
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
make: 1254-004 The error code from the last command is 8.
Stop.
-----END SNIPPET-----
Well, thanks to the other bug thread in this forum and Guillaume Tamboise <gtamboise#houston.sns.slb.com>, I finally got around this third problem by reinstalling gmp-4.1.4 with:
./configure ABI=32 --disable-static
After this, Math-GMP-2.04 built successfully.
Thanks to the guys whose posts on various websites helped me through this! I hope that this post will save a lot of other AIX perl programmers a lot of trouble.