交叉编译glibc遇到如下问题:
make -r PARALLELMFLAGS="" CVSOPTS="" -C ../glibc-2.3.4-20040701 objdir=`pwd` all
make[1]: Entering directory `/mnt/lfs/sources/6.0/glibc-2.3.4-20040701'
autoconf sysdeps/i386/elf/configure.in > sysdeps/i386/elf/configure.new
autoconf: Undefined macros:
***BUG in Autoconf--please report*** AC_FD_MSG
make[1]: *** [sysdeps/i386/elf/configure] Error 1
make[1]: Leaving directory `/mnt/lfs/sources/6.0/glibc-2.3.4-20040701'
make: *** [all] Error 2
问题出在autoconf的版本过低,下载编译最新版本,问题解决。
遇到第二个问题:
第一遍编译gcc-4.3.2的时候卡住了。
configure 可以通过。
但make执行了近10分钟的时候,出这个错误:
checking for suffix of object files... configure: error: cannot compute suffix of object files: cannot compile
看config.log发现说没有权限,后来发现它在执行gcc/xgcc时需要找gcc/as,而as找不到可执行的as文件。而这个文件是由binutils编译生成的。
由于我在编译binutils时设置的target与编译gcc是不一致,导致查找错误。现在改成一致的。通过。
编译glibc又遇到问题:
configure: error: forced unwind support is required
需要将
libc_cv_forced_unwind=yes
libc_cv_c_cleanup=yes
libc_cv_arm_tls=yes
libc_cv_gnu99_inline=yes
写到config.cache里
然后configure的时候加上
--cache-file=config.cache
kernel头文件的安装:
在kernel目录中,
make INSTALL_HDR_PATH=/opt/arm headers_install
安装过程中会遇到getline的问题,因为script文件中定义的与stdio中定义的冲突。自定义一下就好了。
加入一个glibc-2.11的patch的链接,用于解决libgcc_eh的问题:
arm的一个交叉编译器:
http://www.codesourcery.com/sgpp/lite/arm/portal/release1033
这个是
configure自动识别build类型错误,并且认为不是交叉编译造成的,加上--build=i686-pc-linux-gnu后通过
configure,但make产生redefinition of '__copysign' 的错误,改成--build=i386-linux-gnu后通过