當前位置:首頁 » 編程軟體 » gcc編譯so32位數不兼容

gcc編譯so32位數不兼容

發布時間: 2023-08-28 22:36:58

編譯64位程序無法使用32位編譯的lib么

編譯64位程序,不一定要編譯機器是64位的,但是32位機器默認安裝的gcc編譯環境還是不能用來編譯64位程序。編譯64位程序,需要加上-m64編譯器參數,默認安裝的gcc已經支持該參數,但是缺少64位機器指令相關的文件,所以不能編譯,會出現下面的錯誤 In file included from /usr/include/features.h:378, from /usr/include/assert.h:37, from ../../../include/tinyxml/tinystr.h:42, from ../../../src/tinyxml/tinystr.cpp:32: /usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 沒有那個文件或目錄這時候需要安裝 gcc所有支持文件 sudo apt-get install gcc-multilib 將會安裝下列額外的軟體包: cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base gcc-4.4-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64 libgcc1 libgomp1 libstdc++6 libstdc++6-4.4-dev 建議安裝的軟體包: gcc-4.4-locales g++-4.4-multilib gcc-4.4-doc libstdc++6-4.4-dbg libmudflap0-4.4-dev libgcc1-dbg libgomp1-dbg libmudflap0-dbg libcloog-ppl0 libppl-c2 libppl7 lib64mudflap0 libstdc++6-4.4-doc 下列【新】軟體包將被安裝: gcc-4.4-multilib gcc-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64下列軟體包將被升級:

Ⅱ 64位linux編譯32位程序

這個比較麻煩。
首先你要裝好全套的 32 位對應的開發編譯支持環境和對應的運行環境,之後還要設置你這個軟體編譯時用 32 位的參數和 32 位的編譯器。

你這個其實等同於交叉編譯。

Ⅲ gcc g++ 使用哪些編譯選項可以讓編譯出來的程序兼容32位和64位

用32位的gcc,編譯出來後,能在32位上運行,也能在64位上兼容。

Ⅳ 如何在Linux下用gcc將c語言文件編譯成32位exe文件,且可以在Windows下運行

有方法的,不過要看你編繹出的程序需要用到多少windows的庫,看看linux下有沒有可以替代的,不過很多時候沒有windows內核還是無法編譯成功的。
方法一:安裝mingw32
方法二:virtualbox安裝xp的虛擬機
方法三:通過wine使用cl命令行編譯
上面幾個方法你可以嘗試一下。
至於編輯嘛,高手一般直接就用vim,如果你覺得難用的話,可以用eclipse或者kdevelop,kdevelop有點像windows下VS,希望對你有所幫助

Ⅳ 編譯uboot時出現/bin/sh: 1: /opt/buildroot-gcc342/bin/mipsel-linux-as: not found

這個錯誤應該是告訴你,你的編譯器沒找到。你去確認下這個目錄存不存雀中在:
/opt/buildroot-gcc342/bin/mipsel-linux-as
如果不存在,那肯定是編譯器沒安裝。
如果存在,我看網上有人在說:是因為系統是64位的,而編譯禪早器是32位的,不兼容。你換個32位系統賀歲雀試試。

Ⅵ 64位UBUNTU 下 如何用GCC 編譯出32位程序 求前輩指點

目測是32位的搜索路徑下沒有sys/cdefs.h
一般64位系統最好不要安裝32位庫的-dev,經常有沖突,強行安裝會破壞64位環境,頭文件並不像共享庫分得那麼完美。
我覺得比較好的做法是,重新把某一個文件夾當成rootfs,在裡面安裝各種32位的庫和庫-dev,然後給gcc傳遞參數"--sysroot=路徑"就可以讓gcc重新選取那個文件夾為rootfs,而不再認為/為rootfs。其實這樣就變成交叉編譯了。也可以在這個rootfs中安裝32位的必要軟體包如bash,gcc,coreutils等等,然後chroot進去就變成host編譯了。其實有個比較簡單的方法,就是虛擬機下安一個32位的ubuntu,然後裝好各種軟體包,然後直接對/打包,再拿出來解壓就是rootfs了,後面最多就是缺啥安啥,工作量比較小。當然如果你不在意編譯速度,直接虛擬機下編最簡單

Ⅶ 在編譯的時候出現這個問題在網上找了要在gcc後面加上-m32但還是不行求解答!

加-m32後要保證所有的引用都必須是32位的,並且所有編譯過的程序需要清空並重新編譯。

Ⅷ linux64位機器編譯32位程序出現錯誤。

32 和 64 是完全兩個不同的系統。Linux 他們的兼容,完全是基於內核的雙模式切換功能,但是因為是基於內核的。所以 32 和 64 的系統函數庫就還是沒關系。
那麼,你編譯和運行 32 位程序,就需要 64 位的函數庫介面支撐。同樣 64 位程序,也需要 64 位的函數庫提供支撐。

你這個問題,教程只讓你裝了最基本的編譯器環境,但是函數支撐環境全都沒有裝,肯定是還會提示找不到需要的函數庫的。
另外,就算你這個命令裝了需要的函數庫,也肯定只是裝了 64 位的函數庫,32 位庫也沒有裝。那麼編譯 32 位程序也會出現找不到 32 位函數庫的問題的。

你這個問題,我建議你學習兩部分:
1、Linux 的依賴關系;
2、Linux 的 mutilib 相關實現。

我建議,編譯 32 的程序請用純 32 位系統。64 位系統只編譯 64 位的程序。64 位系統只可以運行 32 位程序,不要用來編譯。Linux 裡面隨便找個程序,就會依賴很多的函數庫,這對於編譯器調用來說,會很亂的。
如果真的沒有空閑機器去單獨跑 32 位系統了,我建議要麼是 chroot 環境,要麼是用交叉編譯。不過注意這兩種方式還是需要設置。

Ⅸ 64位的電腦裝32位的ubuntu,gcc編譯結果和正常32位的電腦會不會不一樣

不會啊,編譯結果是正常32位的

熱點內容
centos解壓zip 發布:2024-11-20 15:09:52 瀏覽:144
ftp軟體的使用 發布:2024-11-20 14:53:21 瀏覽:611
手機看wifi密碼怎麼看 發布:2024-11-20 14:32:39 瀏覽:794
l2級別安全配置都有哪些配置 發布:2024-11-20 14:31:02 瀏覽:773
明日之後伺服器怎麼那麼多 發布:2024-11-20 14:29:59 瀏覽:144
html5開發源碼下載 發布:2024-11-20 14:24:52 瀏覽:216
安卓系統鎖了怎麼刷機 發布:2024-11-20 14:22:40 瀏覽:738
php生成網頁圖片 發布:2024-11-20 14:17:30 瀏覽:968
java編譯servlet 發布:2024-11-20 13:49:48 瀏覽:807
線程結束源碼 發布:2024-11-20 13:39:42 瀏覽:839