You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

32位与64位Linux库体积差异过大,求验证及排查方法

32位Linux库编译验证与体积异常排查

库体积异常现象

编译的32位库体积普遍远小于对应64位版本,但glibc是例外:

  • 32位libpng12.so.0.14.0仅203KB,64位版本为513KB
  • 32位libfreetype.so.6.3占595KB,64位版本达1.9MB
  • 32位glibc体积更大:32位ld-2.18.so为156KB,64位ld-2.17.so为669KB(版本不同但差异过于显著)

编译命令差异

通用32位库编译命令

CFLAGS (or CPPFLAGS)=-m32 ./configure --prefix=/... --host=i686-gnu-linux

32位glibc编译命令

CC="gcc -m32 -march=core2 -mtune=core2 -O2" CXX="g++ -m32 -march=core2 -mtune=core2 -O2" ../configure --prefix=/media/34GB/Arquivos-de-Programas-Linux-32bit/Glibc-2.17/ --build=x86_64-linux-gnu --host=i686-gnu-linux --enable-kernel-2.6.32 --enable-profile

64位glibc编译命令

CFLAGS="-march=core2 -mtune=core2 -O2" ../configure --prefix=/media/34GB/Arquivos-de-Programas-Linux/Glibc-2.18/ --enable-kernel=2.6.32 --enable-profile

测试运行问题

尝试用以下命令运行32位Hello World程序时出现段错误,无法确定是glibc本身问题,还是与64位辅助库冲突:

./ld-linux.so.2 --library-path /media/34GB/Arquivos-de-Programas-Linux/Gcc-4.9.4/lib32/ /home/leopoldo/Desktop/test-32bit

需要明确如何验证编译出的32位库(尤其是通用库)是否正确,避免花费大量时间编译错误库。

补充:自定义GCC编译配置

编译GCC时使用的命令:

../configure --prefix=/media/34GB/Arquivos-de-Programas-Linux/Gcc-4.9.4 --disable-checking --enable-languages=c,c++ --enable-multiarch --enable-multlib --with-multilib-list=m32,m64 --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu

make -j2 BOOT_CFLAGS='-O' bootstrap

安装后做了以下操作:将系统libstdc++.so.6.0.13重命名为bak后缀,删除原libstdc++.so.6符号链接,新建指向GCC目录下libstdc++.so.6.0.20的链接。

内容的提问来源于stack exchange,提问作者user2752471

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:54:40