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 位编译选项

原文地址:https://www.cnblogs.com/DKYcaiji/p/15499957.html