|
|
发表于 2006-7-27 17:22:19
|
显示全部楼层
两种解决方案
先说一下问题的起因:
这个问题的原因是gcc无法找到的问题,也就是说,你在chroot以后,执行gcc -v显示的是没有那个文件,而你在$LFS下面执行gcc -v ,结果是正确的,如下所示:
lfs:/mnt/hdd/sources/patch-2.5.4$ gcc -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.1.0-patch/configure --prefix=/tools --libexecdir=/tools/lib --with-local-prefix=/tools --enable-clocale=gnu --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-languages=c,c++ --disable-libstdcxx-pch
Thread model: posix
gcc version 4.1.0
这说明问题:gcc没有正确的链接到glibc,针对这个状况,有如下两种解决方案:
第一种:快速但是痛苦的方法
将gcc给编译成静态链接的 也就是我在http://www.linuxsir.cn/bbs/showt ... 1里面所说的:
我推荐的方法:
直接在lfs用户编译的时候,再把gcc给静态编译一次,也就是
../gcc-2.4/configure **** 之后,在gcc-build目录下面生成了Makefile
将Makefile里面的CFLAGS_FOR_BUILD补充一个--static
重新编译以后,gcc就可以正常运行了
错误回放一遍:
在lfs用户下面,gcc -v,
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.1.1-static/configure --prefix=/tools/gcc-4.1.1 --libexecdir=/tools/lib --with-local-prefix=/tools --enable-clocale=gnu --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-languages=c,c++ --disable-libstdcxx-pch
Thread model: posix
gcc version 4.1.1
正确
chroot以后,gcc -v
结果得到的却是:no such file or directory
使用strace 跟踪以后发现execv("/tools/bin/gcc","-v"***)的时候出错,报没有找到这个文件。但是该文件确实存在
所以定位不了问题,就多半是动态链接库的问题,干脆改成静态链接的好了,反正我只是要新版本的glibc,gcc的大小我不关心
这样做带来的后果是:无法生成任何调用gcc动态链接库的东西,也就是必须严格禁止-g参数的设置,这样会给后续的编译带来很多问题,完全不推荐 |
|