OpenEuler gcc生成32位程序
OpenEuler gcc生成32位程序
问题
由于编程需要,现需在 64位 OpenEuler 操作系统下,生成32位程序。

OpenEuler的软件包中没有提供 gcc-multilib 的安装。
检查 cd /usr/include/gnu/

缺少 stubs-32.h
解决
1.在ubuntu中安装 multilib 库
在Ubuntu 中可以直接通过 apt install gcc-multilib

2.将 缺少的头文件 复制到openeuler中

此时再次 编译32位文件会出现

提示缺少crtn.o crt1.o crti.o -lgcc -lgcc_s -lc
也就是 libgcc.a libgcc_s.so 这两个文件存在差异

检查/usr/lib/gcc/x86_64-linux-gnu/7.3.0/果然如此
3.将 以上文件 从 ubuntu 复制到 openeuler中

找到 crtn.o crt1.o crti.o 文件路径
将 crtn.o crt1.o crti.o 从 ubuntu 复制到 openeuler中

替换 libgcc.a libgcc_s.so (须保持gcc版本相同,注意备份)
此方法比较麻烦复杂且改写libgcc文件时可能引起其他错误(不推荐使用)
方法二
1.在官网下载multilib包
x86架构:
地址:https://packages.debian.org/sid/i386/gcc-multilib/download

amd64架构:
地址:https://packages.debian.org/sid/amd64/gcc-multilib/download

选择任意链接保存即可
2.在openeuler上安装dpkg包管理工具

3.使用dpkg安装gcc-multilib
ps:此方法适用于有对应gcc版本情况
方法三
源码编译gcc时 选项配置 enable 32 位编译选项

浙公网安备 33010602011771号