2012-12-24 28 views
29

我已經編譯過clang使用它作爲ARM的交叉編譯器(通過配置它與./configure --target=armv7l-unknown-linux-gnueabihf),但是當我嘗試編譯任何C代碼時,它會嘗試使用/usr/bin/as。我已經爲ARM編譯binutils,並且它們位於單獨的目錄中。我如何直接使用clang(或llvm)來使用我指定的彙編程序?如何使用自定義彙編程序進行叮噹聲?

+0

我知道我這樣做是最近ly - 讓我看看我是否有配置文件。對於ARM而言,它不應該使用機器代碼生成器,而不是試圖運行彙編器?你有沒有嘗試傳遞'--integrated-as'?你能用'-v'顯示一個命令行和輸出的例子嗎? –

+0

我的配置行,雖然看起來沒有太多的幫助:'../llvm/configure --target = mipsel-sde-elf --prefix =/some/prefix --enable-optimized'。這確實工作正常,並運行'/ some/prefix/mipsel-sde-elf-as'。也就是說,我通常使用集成的彙編程序,所以我還沒有經過一段時間的測試。 –

+0

@CarlNorum我也有一個集成的彙編器('armv7l-unknown-linux-gnueabihf-llvm-as')和clang在同一個文件夾中,但它仍然使用'/ usr/bin/as'。我不確定'armv7l-unknown-linux-gnueabihf-llvm-as'是否在內部調用'/ usr/bin/as'。 – JosephH

回答

0

我總是在使用./configure從源代碼目錄進行配置時遇到了問題,最後放棄了。現在我總是從一個單獨的目錄配置,即../configure,雖然我被告知建議使用絕對路徑進行配置。

您的ARM binutils應該安裝在您用於clang的相同前綴中,並確保它們在配置& build clang時位於路徑中 - 即PATH =/some/prefix/bin:$ PATH;/configure --target = armv7l-unknown-linux-gnueabihf。如果您爲了打包目的而將它們保存在不同的目錄中,請安裝DESTDIR =應該幫助。

我一般不建鐺,但我用devkitARM的buildscripts可能會有所幫助 - http://sourceforge.net/p/devkitpro/buildscripts/ci/c372699fc7b4de90eb044314ce5bed04db640291/tree/

+0

對不起,我從來沒有在與之前的源目錄相同的目錄中配置clang。爲了簡潔,我在問題中包含的命令省略了「--prefix」標誌。正如你從CarlNorum的評論中看到的那樣,我確實注意到他包含了「--prefix」標誌,但它仍然不適用於我。奇怪的是編譯過程確實似乎在'bin'(帶有正確的目標三元組)的文件夾中創建了集成的彙編器二進制文件,但它從不使用它。我一定會看看你在答案中包含的構建腳本。 – JosephH

2

嘗試傳遞--host選項來配置,這將導致所有的CC AR等公用事業與armv7l-前綴未知的Linux gnueabihf- 如:

./configure --host=armv7l-unknown-linux-gnueabihf --build=i686-unknown-linux-gnu 

由於使用的是具有希望配置自動工具來看看: automake Cross compiling

+0

我認爲你誤解了這個問題。 @JosephH在問如何使用clang交叉編譯程序,但是你的答案與「如何交叉編譯clang本身」有關。 –

相關問題