1. 程式人生 > 其它 >OpenEuler gcc生成32位程式

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 位編譯選項