我是学电子的,平时用 arm-linux-gcc 交叉工具链。最近用 gcc-4.6.3 编译的
arm-none-linux-gnueabi 交叉工具链在编译Qt代码的时候出现了g++找不到库文件
的问题

arm-linux-g++ -lts -Wl,-O1
-Wl,-rpath,/usr/local/Trolltech/QtEmbedded-4.8.0-arm/lib -o movies
main.o movieplayer.o moc_movieplayer.o
-L/usr/local/Trolltech/QtEmbedded-4.8.0-arm/lib -lQtGui
-L/usr/local/trolltech/tslib/lib/
-L/usr/local/Trolltech/QtEmbedded-4.8.0-arm/lib -lQtNetwork -lQtCore
-lpthread 
/usr/local/arm/4.6.3/lib/gcc/arm-none-linux-gnueabi/4.6.3/../../../../arm-none-linux-gnueabi/bin/ld:
 skipping incompatible /lib/libpthread.so.0 when searching for 
/lib/libpthread.so.0
/usr/local/arm/4.6.3/lib/gcc/arm-none-linux-gnueabi/4.6.3/../../../../arm-none-linux-gnueabi/bin/ld:
 cannot find /lib/libpthread.so.0
collect2: ld 返回 1
make: *** [movies] 错误 1

可以看到 arm-none-linux-gnueabi-g++ 跑到根目录 /lib 下面找寻找库文件
libpthread.so.0,而libpthread.so.0 和其他库是放在它自己的目录下面的。

我的 gcc 配置选项是
../configure --target=arm-none-linux-gnueabi \
--prefix=/usr/local/arm/4.6.2/ --enable-languages=c,c++ \
--disable-libgomp --with-cpu=arm920t --with-tune=arm9tdmi
--with-float=soft

配置选项只指定了安装目录,编辑器支持的语言和目标体系,去掉了编译会出错的
libgomp ,没有指定库文件目录。但是用 gcc 去编译 c 代码的时候是可以正常去
自己的库搜索,出问题的是 g++ ,也就是在编译 c++ 代码的时候 g++ 会去根目
录寻找系统库


-- 
ubuntu-zh mailing list
ubuntu-zh@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh

回复