glibc库的交叉编译及使用

参考:https://blog.csdn.net/boyemachao/article/details/104520677

1. 环境准备

宿主系统:ubuntu 10.04

交叉编译工具:arm-fsl-linux-gnueabi 版本4.4.4

https://cloud.189.cn/web/share?code=mM7FBv2uiuA3(访问码:9jap)

下载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

2. 分别解压缩文件

把glibc-ports-2.11文件夹重命名为ports放入glibc-2.11.1中;

tar -zxvf glibc-2.11.1.tar.gz
tar -zxvf glibc-ports-2.11.tar.gz

在与glibc-2.11.1的同级目录下下建立一个文件夹叫:glibc

mkdir glibc

在glibc目录下编写配置脚本:

cd glibc

编译器的路径为:

../cross_compiler/arm-fsl-linux-gnueabi/...

glibc-2.11.1的路径为:

../glibc.2.11.1

3. 编译脚本

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 -fno-stack-protector" >configparms
../glibc-2.11.1/configure  --host=arm-linux-gnueabi --enable-add-ons \
--with-include=${CC_PATH}/arm-fsl-linux-gnueabi/include/ \
--prefix=${SRCROOT}/glibc_bin \
libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes \
--enable-kernel=2.6.0 --with-tls --disable-profile

3.1 参数说明

--host=arm-linux-gnueabi 表示目标机器为 arm-linux-gnueabi

--enable-add-ons 表示把我们加入的ports加进编译。

--with-include=${CC_PATH}/arm-fsl-linux-gnueabi/include/ 就是交叉编译工具的头文件路径

--prefix=${SRCROOT}/glibc_bin 表示安装路径

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 -fno-stack-protector" >configparms

3.2 编译安装

make
make install

4. 编译后的文件打包

tar -zcvf glibc_bin.tar.gz glibc_bin/

https://cloud.189.cn/t/Mza6fem6ruqq (访问码:le4x)

posted @ 2024-06-21 21:36  丿情义灬绝天  阅读(240)  评论(0编辑  收藏  举报