2011-08-28 211 views
1

C應用程序,我想建立i386架構,但我目前正在運行的x86_64的操作系統和我使用鏈接到生成應用程序二進制文件是針對i386架構構建的共享庫的應用程序。如果我的共享庫運行文件命令我用我獲得以下輸出交叉編譯使用GCC

ELF 32-bit LSB shared object, Intel 80386, version 1 (S│Size: 13064788 SV), dynamically linked, not stripped 

但是GCC跳過此共享庫說它是不相容的。所以我只是想知道是否有任何選擇我可以告訴GCC編譯i386架構而不是我的本地機器架構?

是的,我已經通過這個論壇,許多交叉編譯的問題走了,但我沒有完全理解豐達,因爲我是新來的交叉編譯的東西。交叉編譯是否需要我有一個與我試圖編譯的體系結構相同的體系結構的gcc?交叉編譯是否必須使用像binutils這樣的工具鏈?

我用一個簡單的手寫make文件和不使用任何工具的工具鏈。

由於提前

回答

2

其實,你也許能簡單地指定您的gcc編譯命令「-m32」脫身。試試吧:)

如果你得到鏈接錯誤,然後嘗試安裝32位C運行時庫;然後重試「的gcc -m32」編譯:

sudo apt-get install ia32-libs 
+0

由於其工作:) ..是的,它沒有抱怨失蹤32位的庫所以安裝IA32-庫。其實感謝所有回答:)的人:) – copyninja

1

GCC支持-m32標誌這使得它編譯一個32位平臺。

2

-m32選項告訴編譯器生成32位的代碼,而不是64位。如果您特別需要80386代碼(和優化),您可能還需要-march=i386