当我尝试构建32位程序时,libtool会选择64位库

时间:2014-05-13 10:14:38

标签: 32-bit autoconf automake libtool

我有一个GNU构建系统,包含autoconf-2.69,automake-1.14.1,libtool-2.4.2。我在x86_64 RHEL6主机操作系统上配置了--host = i686-linux来构建一个32位程序。 libtool命令似乎是:

/bin/sh ../libtool  --tag=CXX   --mode=link g++ -I/home/STools/RLX/boost/include/boost-1_44  -m32 -g3 -Wall -static  -o engine engine-main.o ../components/librlxvm.la /home/STools/RLX/boost/include/boost-1_44/../../lib/libboost_program_options-gcc42-mt-1_44.a  -lz -lpthread -ldl  -lrt -ldl -lz -lm

但真正的命令是搜索64位库而不是32位库,如下所示:

libtool: link: g++ -I/home/STools/RLX/boost/include/boost-1_44 -m32 -g3 -Wall -o engine engine-main.o  -L/home/robert_bu/src/gcc/gcc-4.2.2/build-x86_64/x86_64-unknown-linux-gnu/libstdc++-v3/src -L/home/robert_bu/src/gcc/gcc-4.2.2/build-x86_64/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -L/home/robert_bu/src/gcc/gcc-4.2.2/build-x86_64/./gcc ../components/.libs/librlxvm.a /home/STools/RLX/boost/include/boost-1_44/../../lib/libboost_program_options-gcc42-mt-1_44.a /home/STools/RLX/gcc-4.2.2-x86_64/lib/../lib64/libstdc++.so -L/lib/../lib64 -L/usr/lib/../lib64 -lc -lgcc_s -lrt -ldl -lz -lm -pthread -Wl,-rpath -Wl,/home/STools/RLX/gcc-4.2.2-x86_64/lib/../lib64 -Wl,-rpath -Wl,/home/STools/RLX/gcc-4.2.2-x86_64/lib/../lib64

--host配置似乎没有效果。反正告诉libtool 32位库是我们想要的吗?

2 个答案:

答案 0 :(得分:1)

似乎libtool使用" CC"," CXX"检查库搜索路径。将CC设置为" gcc -m32",然后将CXX设置为" g ++ -m32"后,它可以正常工作。所以libtool不会添加" -m32"即使我尝试在64位系统上构建32位程序也会自动执行。

答案 1 :(得分:0)

你被libtool .la files expansion的问题所困扰。特别是libstdc++.la正在扩展为完整路径,而不是简单的-lstdc++

我的建议是从您正在使用的SDK中删除.la文件(/home/STools)。这种方式libtool无法为您承担任何责任。通常你在系统中的那些很好,因为库已经在搜索路径中,所以它不需要使用-rpath.so文件的完整路径。

根据SDK的制作程度,这可能会也可能无法正常工作,所以请耐心等待。