2010-05-17 90 views
0

我編譯我的架構設置程序GCC架構問題

-mtune=i386 

不過,我也連接靜態對幾種庫(即libpng,zlib的,jpeglib,vorbisfile,libogg)。我已經使用configure和make自己構建了這些庫,所以我猜這些庫是建立在架構被設置爲我的系統的架構,這將是i686。但我不想那樣!我希望我的程序也能在i386上運行,所以我需要確保我靜態鏈接的所有這些庫都是爲i386構建的。

所以我的問題:有沒有一種方便的方法來爲i386構建libpng/zlib/jpeglib/vorbisfile/libogg等,還是我必須手動修改它們的所有makefile並確保-mtune設置爲i386?

感謝您的幫助!

安迪

回答

2

--mtune僅調諧指示輸出(訂貨,調度等),但並不保證輸出僅I386,那是什麼--mcpu--march或目標是(i386-...

2

我想,如果他們使用自動工具來生成Makefile文件

CFLAGS="-march=i386 -O3" make ...

可能會奏效。你也可以從RPM中提取文件,如果他們有你想要的版本的.a和頭文件。或者去一個SRPM和修改規格/腳本來建立拱:

RPM_ARCH="i386" 

真的是沒有那麼多的麻煩,重建庫正常,以確保您不會錯過任何東西。它不像你在編譯整個發行版。

+0

我反對! :-)這很麻煩,因爲配置腳本生成了一個50 KB的makefile野獸,其中包含大量對「i686」的引用。這些參考文件也不會在執行時消失./configure --target = i386 真的不容易分析那裏正在發生的事情......它可能會更容易創建我自己的生成文件,而不是搞亂汽車生成一個... – Andy 2010-05-17 18:44:59