2015-11-05 71 views
0

我正在嘗試使用clang++作爲G ++的嵌入式替換。我正在編譯AArch64,但對於鏈接,clang似乎調用本地(x86)/usr/bin/ld而不是AArch64 GCC套件。該clang命令行的樣子:鏗鏘++作爲嵌入式g ++替換

clang++ -target aarch64-linux-gnu -v \ 
    -gcc-toolchain /path/to/aarch64/gcc \ 
    --sysroot=/path/to/aarch64/gcc/aarch64-linux-gnu/libc \ 
    <some other options> <obj files> 

而且從詳細的輸出,我得到:

 
Ubuntu clang version 3.4-1ubuntu3 (tags/RELEASE_34/final) (based on LLVM 3.4) 
Target: aarch64--linux-gnu 
Thread model: posix 
Found candidate GCC installation: /path/to/aarch64/gcc/lib/gcc/aarch64-linux-gnu/4.9.3 
Selected GCC installation: /path/to/aarch64/gcc/lib/gcc/aarch64-linux-gnu/4.9.3 
"/usr/bin/ld" --sysroot=/path/to/aarch64/gcc/aarch64-linux-gnu/libc ... 

我不知道爲什麼clang得到周圍選擇本地連接。鏈接失敗的原因很明顯,目標文件是AArch64 ELF。編輯線類似於上述,但它們都行。

有什麼想法?

PS:我是一個新手clang用戶

回答

0

我設法找到一個解決方案:GCC接受-B選項指向它會嘗試找到公用的搜索路徑。事實證明 - 雖然沒有記錄 - 鏗鏘也接受這個選項。對我來說,有-B指向AArch64 binutils解決了這個問題。另一個建議是在$PATH中添加AArch64 binutils。