c - 使用 GCC 编译 32 位程序时出现奇怪的错误
问题描述
当我尝试在 64 位 Linux 上使用 GCC 编译一个简单的 32 位 C 程序时,我收到以下消息:
[teo.samarzija@teos-acer-laptop debug]$ gcc -m32 -o program program.c
/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/8.3.1/ld: skipping incompatible /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.3.1/libgcc.a when searching for -lgcc
/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/8.3.1/ld: /usr/local/lib/gcc/x86_64-pc-linux-gnu/8.3.1/32/libgcc.a(_muldi3.o): unable to initialize decompress status for section .debug_info
/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/8.3.1/ld: /usr/local/lib/gcc/x86_64-pc-linux-gnu/8.3.1/32/libgcc.a(_muldi3.o): unable to initialize decompress status for section .debug_info
/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/8.3.1/ld: skipping incompatible /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.3.1/libgcc.a when searching for -lgcc
/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/8.3.1/ld: /usr/local/lib/gcc/x86_64-pc-linux-gnu/8.3.1/32/libgcc.a(_muldi3.o): unable to initialize decompress status for section .debug_info
/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/8.3.1/ld: /usr/local/lib/gcc/x86_64-pc-linux-gnu/8.3.1/32/libgcc.a(_muldi3.o): unable to initialize decompress status for section .debug_info
/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/8.3.1/ld: skipping incompatible /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.3.1/libgcc.a when searching for -lgcc
/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/8.3.1/ld: /usr/local/lib/gcc/x86_64-pc-linux-gnu/8.3.1/32/libgcc.a(_muldi3.o): unable to initialize decompress status for section .debug_info
/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/8.3.1/ld: /usr/local/lib/gcc/x86_64-pc-linux-gnu/8.3.1/32/libgcc.a(_muldi3.o): unable to initialize decompress status for section .debug_info
/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/8.3.1/ld: skipping incompatible /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.3.1/libgcc.a when searching for -lgcc
/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/8.3.1/ld: /usr/local/lib/gcc/x86_64-pc-linux-gnu/8.3.1/32/libgcc.a(_muldi3.o): unable to initialize decompress status for section .debug_info
/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/8.3.1/ld: /usr/local/lib/gcc/x86_64-pc-linux-gnu/8.3.1/32/libgcc.a(_muldi3.o): unable to initialize decompress status for section .debug_info
/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/8.3.1/ld: i386:x86-64 architecture of input file `/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.3.1/crtbegin.o' is incompatible with i386 output
/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/8.3.1/ld: i386:x86-64 architecture of input file `/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.3.1/crtend.o' is incompatible with i386 output
collect2: error: ld returned 1 exit status
我该怎么办?
解决方案
查看另一个与 GPS 相关的问题,似乎 GPS 带有在不支持 multilib 的情况下编译的 GCC。如果您运行gcc -v
,您会注意到--disable-multilib
输出中提到的选项。
那我想你倒霉了。您要么必须自己构建 GCC,要么从与 GPS 无关的其他来源安装它:例如,从您的 Linux 发行版的存储库中。然后你必须以某种方式告诉 GPS 使用这个其他版本的 GCC。
推荐阅读
- angular - 放置我的构造函数后,'ngOnInit' 上的分页和排序不起作用
- python - 源错误消息="索引 '('d1', 'i1')' 对索引组件 'NFix' 无效"
- c# - 多个完全松散映射 SolrNet Init
- powershell - 在 RingCentral 中以编程方式创建任务
- javascript - 减慢圆碰撞分辨率的运动
- terser - Terser - 当原始地图文件还包含源时如何包含源?
- python - Python 条件正则表达式
- docker - 将文件从一个 docker 容器复制到另一个 - 从源容器中
- r - 仅将 log2 转换应用于 data.frame 的数字列
- excel - VBA:仅保护形状对象