这里需要强调一下:libc、glibc、glib是不同的库!
glibc和 libc 都是 Linux 下的 C 函数库,而glib是GTK+的基础库
libc 是 Linux 下的 ANSI C 函数库;glibc 是 Linux 下的 GUN C 函数库。
编译binutils
http://ftp.gnu.org/gnu/binutils/
Binutils是GNU工具之一,它包括链接器、汇编器和其他用于目标文件和档案的工具,它是二进制代码的处理维护工具。
介绍https://sourceware.org/binutils/

zlib 编译
http://www.zlib.net/fossils/
export CC=aarch64-linux-gnu-gcc
export AR=aarch64-linux-gnu-ar
export RANLIB=aarch64-linux-gnu-ranlib
./configure --prefix=$PWD/arm-install --includedir=/usr/aarch64-linux-gnu/include --libdir=/usr/aarch64-linux-gnu/lib --shared
ranlib – 更新库的有效符号表

cp libz.a /usr/aarch64-linux-gnu/lib
chmod 644 /usr/aarch64-linux-gnu/lib/libz.a
cp libz.so.1.2.8 /usr/aarch64-linux-gnu/lib
chmod 755 /usr/aarch64-linux-gnu/lib/libz.so.1.2.8
cp zlib.3 /home/zys/work/tool/zlib-1.2.8/arm-install/share/man/man3
chmod 644 /home/zys/work/tool/zlib-1.2.8/arm-install/share/man/man3/zlib.3
cp zlib.pc /usr/aarch64-linux-gnu/lib/pkgconfig
chmod 644 /usr/aarch64-linux-gnu/lib/pkgconfig/zlib.pc
cp zlib.h zconf.h /usr/aarch64-linux-gnu/include
chmod 644 /usr/aarch64-linux-gnu/include/zlib.h /usr/aarch64-linux-gnu/include/zconf.h
cp zlib.pc zlib-arm.pc
sudo mv zlib-arm.pc /usr/local/lib/pkgconfig/
通过pkg-config --cflags zlib-arm 可以找到路径 说明ok
zlib 编译问题
../configure --prefix=$PWD/../arm-install CC=aarch64-linux-gnu-gcc --host=aarch64-linux-gnu
这种方式编译会导致下面的问题,
链接器用的x86,库是arm的

本文介绍了Linux下的C函数库libc与glibc的区别,以及glib作为GTK+基础库的角色。同时,详细阐述了如何编译binutils和zlib,包括设置环境变量、配置选项以及执行编译步骤。在编译过程中,提到了ranlib用于更新库的符号表,并展示了zlib编译后的文件安装路径和权限设置。在遇到问题时,特别指出了一种可能导致链接错误的编译方式,即链接器使用了错误的架构。

2558

被折叠的 条评论
为什么被折叠?



