主题 : 4.3.2交叉编译器找不到正确的libc.so.6 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 4954
精华: 0
发帖: 3
金钱: 30 两
威望: 30 点
综合积分: 6 分
注册时间: 2009-04-05
最后登录: 2010-03-30
楼主  发表于: 2009-07-19 15:02

 4.3.2交叉编译器找不到正确的libc.so.6

(cd /workroot/apps/alsa-lib-1.0.17a/modules/mixer/simple; /bin/bash ../../../libtool  --tag=CC --mode=relink arm-linux-gcc -g -O2 -W -Wall -g -O2 -o smixer-sbase.la -rpath /usr/lib/alsa-lib/smixer -module -avoid-version sbase.lo ../../../src/libasound.la -inst-prefix-dir /workroot/rootfs/root)
arm-linux-gcc -shared  .libs/sbase.o  -L/workroot/rootfs/root/usr/lib -L/usr/lib -lasound  -Wl,-soname -Wl,smixer-sbase.so -o .libs/smixer-sbase.so
我用4.3.2编译器成功地编译了内核和其它一些包,编译alsa-lib时没有问题,但是当make install 这个包时,出现了如下错误,请大家帮忙。
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld: warning: library search path "/usr/lib" is unsafe for cross-compilation
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /lib/libc.so.6 when searching for /lib/libc.so.6
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld: cannot find /lib/libc.so.6
collect2: ld returned 1 exit status
libtool: install: error: relink `smixer-sbase.la' with the above command before installing it
[ 此帖被zu887在2009-07-19 15:09重新编辑 ]
级别: 新手上路
UID: 4954
精华: 0
发帖: 3
金钱: 30 两
威望: 30 点
综合积分: 6 分
注册时间: 2009-04-05
最后登录: 2010-03-30
1楼  发表于: 2009-07-19 15:03

 Re:4.3.2交叉编译器找不到正确的libc.so.6

标题写错了,是“找不到”
级别: 新手上路
UID: 7312
精华: 0
发帖: 26
金钱: 260 两
威望: 245 点
综合积分: 52 分
注册时间: 2009-07-09
最后登录: 2010-10-04
2楼  发表于: 2009-07-19 15:14

 Re:4.3.2交叉编译器找到正确的libc.so.6

-L/workroot/rootfs/root/usr/lib -L/usr/lib
从你的脚本来看你指定的库的位置是 /usr/lib 还有/workroot/rootfs/usr/lib  
/usr/lib应该是你linux 系统的库。不是X86的库。你最好把他删除了。否则可能出现不匹配。
还有就是要确保你交叉编译的库中有libc.so.6
级别: 新手上路
UID: 4954
精华: 0
发帖: 3
金钱: 30 两
威望: 30 点
综合积分: 6 分
注册时间: 2009-04-05
最后登录: 2010-03-30
3楼  发表于: 2009-07-19 15:22
谢谢指点!
但我在configure的时候并没有指定/usr/lib作为库目录,/usr/lib是编译器自己加的,问题是我不知道如何把它指定为目标系统下的目录。
我尝试过在Makefile中加入-L/workroot/rootfs/lib,但是没有用。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
4楼  发表于: 2009-07-20 11:18
这是我在Ubuntu 9.04上交叉编译alsa-lib 1.0.17a的步骤:
(/mnt/sdc1/project/qq2440/rootfs/root_qtopia是我所用的目标文件系统路径, ‘$’代表普通用户shell,'#'代表root用户shell)
1. $export PATH=$PATH:/usr/local/arm/4.3.2/bin && ./configure --host=arm-none-linux-gnueabi --prefix=/mnt/sdc1/project/qq2440/rootfs/root_qtopia
2. $make
3. $sudo -s (正确的make install需要root权限)
4. #export PATH=$PATH:/usr/local/arm/4.3.2/bin && make install (alsa-lib在make install时还需要交叉编译,因此需要将交叉编译器的路径加入到PATH环境变量中)
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."