2011-04-12 66 views
2

剛剛編譯的鏗鏘-2.9版本,它不能鏈接世界你好的例子。還有就是錯誤:鏗鏘-2.9 crt1未找到錯誤

crt1.o: No such file: No such file or directory 

LLVM配置爲默認+ --enable-shared。具有相同選項的llvm-2.8版本在同一臺機器上正常工作。

$ clang -v a.c 
clang version 2.9 (tags/RELEASE_29/final) 
Target: i386-pc-linux-gnu 
Thread model: posix 
"/root/bin/clang" -cc1 -triple i386-pc-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name a.c -mrelocation-model static -mdisable-fp-elim -masm-verbose -mconstructor-aliases -target-cpu pentium4 -target-linker-version 2.18 -momit-leaf-frame-pointer -v -resource-dir /root/lib/clang/2.9 -ferror-limit 19 -fmessage-length 157 -fgnu-runtime -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/cc-2ueoYy.o -x c a.c 
clang -cc1 version 2.9 based upon llvm 2.9 hosted on i386-pc-linux-gnu 
ignoring nonexistent directory "/usr/local/include" 
#include "..." search starts here: 
#include <...> search starts here: 
/root/lib/clang/2.9/include 
/usr/include 
End of search list. 
a.c:1:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int] 
main(){} 
^~~~ 
1 warning generated. 
"/usr/bin/ld" --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o a.out crt1.o crti.o crtbegin.o -L -L/../../.. /tmp/cc-2ueoYy.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed crtend.o crtn.o 
/usr/bin/ld: crt1.o: No such file: No such file or directory 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

同樣的錯誤在這裏http://permalink.gmane.org/gmane.comp.compilers.clang.devel/12101http://comments.gmane.org/gmane.comp.compilers.clang.devel/14269http://permalink.gmane.org/gmane.comp.compilers.llvm.bugs/11352

我可以邊學邊用LLVM-2.8比較 - 新版本試圖組裝文件本身,和舊版本的GCC調用做組裝並鏈接步驟。

請不要複製clang linker problem,因爲我無法編輯LLVM的源代碼,因此接受的解決方案對我無用。

+0

我有同樣的問題... – skeept 2011-04-15 04:27:30

+0

@skeept,你嘗試從答案的解決方案嗎?將你的gcc版本添加到GccVersions數組中。 – osgx 2011-04-15 11:09:33

回答

1

截至http://permalink.gmane.org/gmane.comp.compilers.llvm.bugs/11352(LLVM錯誤8897),這是因爲

gcc used to build clang is not in a standard location 

system gcc is not listed in the ToolChains.cpp GccVersions list: 

./tools/clang/lib/Driver/ToolChains.cpp: const char* GccVersions[] = {"4.5.2", "4.5.1", "4.5", "4.4.5", "4.4.4", 
./tools/clang/lib/Driver/ToolChains.cpp-        "4.4.3", "4.4", "4.3.4", "4.3.3", "4.3.2", 
./tools/clang/lib/Driver/ToolChains.cpp-        "4.3", "4.2.4", "4.2.3", "4.2.2", "4.2.1", 
./tools/clang/lib/Driver/ToolChains.cpp-        "4.2"}; 

兩種情況都是爲我安裝正確建議。

要解決這個問題,我會嘗試將我的gcc版本添加到列表GccVersions[]

這可以幫助我。