宿主系统:ubuntu 10.04
交叉编译工具:arm-fsl-linux-gnueabi 版本4.4.4
下载glibc的源码包:ftp://ftp.gnu.org/gnu/glibc/glibc-2.11.1.tar.gz
下载glibc-ports的源码包:ftp://ftp.gnu.org/gnu/glibc/glibc-ports-2.11.tar.gz
分别解压缩文件:
把glibc-ports-2.11文件夹重命名为ports放入glibc-2.11.1中;
在与glibc-2.11.1的同级目录下下建立一个文件夹叫:glibc
在glibc目录下编写配置脚本:
我的编译器的路径为:../cross_compiler/arm-fsl-linux-gnueabi/...
我的glibc-2.11.1的路径为:../glibc.2.11.1
export SRCROOT=${PWD}/.. export CC_PATH=${SRCROOT}/cross_compiler/arm-fsl-linux-gnueabi export CROSS_COMPILE=${CC_PATH}/bin/arm-none-linux-gnueabi- export CC=${CROSS_COMPILE}gcc export ARCH=arm echo "CFLAGS +=-O2 -U_FORTIFY_SOURCE" >configparm ../glibc-2.11.1/configure --host=arm-linux-gnueabi --enable-add-ons \ --with-include=$CROSS_COMPILE/arm-fsl-linux-gnueabi/include/ \ --prefix=/media/Backup/code \ libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes \ --enable-kernel=2.6.0 --with-tls --disable-profile
解释下配置中的涵义:
--host=arm-linux-gnueabi 表示目标机器为 arm-linux-gnueabi如果使用 --host=arm-linux会出现如下错误:
/tmp/ccGiL4fV.s: Assembler messages: /tmp/ccGiL4fV.s:40: Error: selected processor does not support `rfs r1' /tmp/ccGiL4fV.s:52: Error: selected processor does not support `wfs r3' make[2]: *** [/media/Backup/Software/ROM1210_PVT/glibc/math/setfpucw.o] Error 1 make[2]: Leaving directory `/media/Backup/Software/ROM1210_PVT/glibc-2.11.1/math' make[1]: *** [math/subdir_lib] Error 2 make[1]: Leaving directory `/media/Backup/Software/ROM1210_PVT/glibc-2.11.1' make: *** [all] Error 2
总之修改完host选项就可以了。具体原因我也不是很清楚。求高手解答。
--enable-add-ons表示把我们加入的ports加进编译。 --with-include=$CROSS_COMPILE/arm-fsl-linux-gnueabi/include/ 就是交叉编译工具的头文件路径 --prefix=/media/Backup/code 表示安装路径 libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes 这两个其实我不知道是啥意思,应该是两个开关,根据网上资料说不加这两个可能会引起某些错误 我自己是没有发现,不过还是加进去吧。 --enable-kernel=2.6.0 设置内核最低版本 --with-tls --disable-profile 打开tls此外这句话是必要的:
echo "CFLAGS +=-O2 -U_FORTIFY_SOURCE" >configparm如果不加入这个就会引起下面这个错误。
../misc/syslog.c: In function ‘__vsyslog_chk’: ../misc/syslog.c:123: sorry, unimplemented: inlining failed in call to ‘syslog’: function body not available ../misc/syslog.c:155: sorry, unimplemented: called from here make[2]: *** [/home/wstone/Build/glibc/glibc-build/misc/syslog.o] Error 1 make[2]: Leaving directory `/home/wstone/Build/glibc/glibc-2.9/misc' make[1]: *** [misc/subdir_lib] Error 2 make[1]: Leaving directory `/home/wstone/Build/glibc/glibc-2.9' make: *** [all] Error 2
最后还有一个错误是一个宏没有定义:
ELFOSABI_ARM_AEABI
好像是我把host修改了引进的吧
没事在 定义宏 :ELFOSABI_ARM的文件里面添加一行定义
#define ELFOSABI_ARM_AEABI ELFOSABI_ARM
这样就ok了。
我忘记了这个文件是那个了```如果出现错误了根据错误信息应该能很快的查找到的。
配置结束后
make
make install
就完成了编译了。
PS:编译可能需要root权限。