32-bit Compiling and Linking
Jeremy Dreese
jdreese at bucknell.edu
Thu Jul 13 14:29:08 UTC 2006
We have user home directories that are shared across 32-bit and 64-bit
systems. We have setup a wrapper script around gcc/g++ so that our
64-bit systems compile in 32-bit mode by default; basically, the "-m32"
option is just inserted into a user's gcc/g++ command. This works fine
if the user is not linking against a library (e.g. "gcc -o hello
hello.c"). However, if they need to link against a library, they get an
error like this:
[user at host dir]$ gcc -o sslnumbers -lssl sslnumbers.c
/usr/bin/ld: skipping incompatible /usr/lib64/libssl.so when searching
for -lssl/usr/bin/ld: skipping incompatible /usr/lib64/libssl.a when
searching for -lssl
/usr/bin/ld: cannot find -lssl
collect2: ld returned 1 exit status
Obviously, it cannot find the 32-bit version of the "ssl" library. This
occurs because their in fact is no "/usr/lib/libssl.so", although
"/usr/lib/libssl3.so" *does* exist. Further, as far as I know there is
no package that includes the necessary "/usr/lib/libssl.so" link. Is
there a way to have the linker find the necessary 32-bit library (other
than manually creating a link)?
Thanks,
Jeremy Dreese
More information about the amd64-list
mailing list