Glibc-2.18编译
1. 下载gcc编译器,在www.kernel.org
2. 配置编译器
exportPATH=$PATH:/home/super4412/gcc-4.6.3-nolibc/arm-unknown-linux-gnueabi/bin
make ARCH=armCROSS_COMPILE=arm-unknown-linux-gnueabi-
3. Linux头文件的取得
Make mrproper
Make headers_check
Make –v dest
Make INSTALL_HDR_PATH=dest headers_install
Cp –rv dest/include/* /tools/include
4. 配置glibc源代码
./glibc-2.18/configure --prefix=/home/super4412/glibc/out--host=arm-unknown-linux-gnueabi --build=i686-pc-linux-gnu CC=arm-unknown-linux-gnueabi-gcc--with-headers=/home/super4412/glibc/linux/include --disable-profile--enable-adds-on libc_cv_forced_unwind=yes libc_cv_c_cleanup=yeslibc_cv_arm_tls=yes
很奇怪为什么configure用从该文件的上一层目录里来调用,否则出错;
5. 编译问题,部分文件缺少系统调用号,从内核中复制定义;
6. ARM版本与socket相关的系统调用缺少文件socket.S,且系统调用号的传递有问题,用R7传递系统调用号;从发行版本glibc-ports-2.15中找到该文件放入;
7. getcontext.S,setcontext.S,swapcontext.S,ucontext_i.sym,makecontext.c,部分ARM寄存器的定义有问题,暂时先注释掉;