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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM