2012-06-16 293 views
1

我想要在運行3.0.0-21-通用內核的x86_64系統上編譯llvm-gcc 4.2.2.9。 llvm 2.9本身就很好。我懷疑llvm-gcc的可下載版本導致了一些其他問題,所以我決定自己構建llvm-gcc。使用gcc編譯內核3.0上的LLVM 2.9的gcc 4.2 4.6

就像在README.LLVM建議我配置了

../llvm-gcc-4.2-2.9.source/configure \ 
    --prefix=/opt/llvm-gcc4.2-2.9/../llvm-gcc4.2-2.9-install \ 
    --disable-multilib \ 
    --program-prefix=llvm- \ 
    --enable-llvm=/opt/llvm-2.9 \ 
    --host=x86_64-generic-linux-gnu 
    --enable-languages=c,c++ 

我從/opt/llvm-gcc4.2-2.9目錄運行此,而源坐在/opt/llvm-gcc-4.2-2.9.source和我LLVM 2.9生活/opt/llvm-2.9。請注意,我正在設置--host而不是--target,因爲這隱式地將--target設置爲相同的體系結構。

make確實建了很多東西(產生警告的相當大的量)時,終於在這個錯誤停止:

make[3]: Entering directory `/opt/llvm-gcc4.2-2.9/gcc' 
/opt/llvm-gcc4.2-2.9/./gcc/xgcc -B/opt/llvm-gcc4.2-2.9/./gcc/ -B/opt/llvm-gcc4.2-2.9/../llvm-gcc4.2-2.9-install/x86_64-generic-linux-gnu/bin/ -B/opt/llvm-gcc4.2-2.9/../llvm-gcc4.2-2.9-install/x86_64-generic-linux-gnu/lib/ -isystem /opt/llvm-gcc4.2-2.9/../llvm-gcc4.2-2.9-install/x86_64-generic-linux-gnu/include -isystem /opt/llvm-gcc4.2-2.9/../llvm-gcc4.2-2.9-install/x86_64-generic-linux-gnu/sys-include -O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -I. -I. -I../../llvm-gcc-4.2-2.9.source/gcc -I../../llvm-gcc-4.2-2.9.source/gcc/. -I../../llvm-gcc-4.2-2.9.source/gcc/../include -I../../llvm-gcc-4.2-2.9.source/gcc/../libcpp/include -I../../llvm-gcc-4.2-2.9.source/gcc/../libdecnumber -I../libdecnumber -I/opt/llvm-2.9/include -g0 -finhibit-size-directive -fno-inline-functions -fno-exceptions -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-omit-frame-pointer -fno-asynchronous-unwind-tables \ 
     -c ../../llvm-gcc-4.2-2.9.source/gcc/crtstuff.c -DCRT_BEGIN \ 
     -o crtbegin.o 
In file included from /usr/include/stdio.h:28, 
       from ../../llvm-gcc-4.2-2.9.source/gcc/tsystem.h:90, 
       from ../../llvm-gcc-4.2-2.9.source/gcc/crtstuff.c:68: 
/usr/include/features.h:323:26: error: bits/predefs.h: No such file or directory 
/usr/include/features.h:356:25: error: sys/cdefs.h: No such file or directory 
/usr/include/features.h:388:23: error: gnu/stubs.h: No such file or directory 

我覺得有些奇怪的是,包括路徑從我的系統stdio.h回到雲llvm-gcc標題,然後再次嘗試包含系統標題。但也許這是正常的?

之後,出現錯誤的數百行錯誤出現在來自同一編譯單元的之後。

難道是我的系統的gcc 4.6.1或我的系統的頭可能與日期的llvm-gcc 4.2頭不兼容嗎?然後再次,我知道在一個不同的系統上(運行2.6內核),gcc 4.5.2在llvm 2.7的gcc 4.2中表現良好。

我在這裏不知所措,因爲我確實需要最近的llvm 2. *,而其他兩個可接受的llvm版本(2.7,2.8)沒有顯示任何結果更有幫助。

+0

也許一個愚蠢的問題,但你嘗試LLVM-3.0或LLVM-3.1鐺? –

+0

@ honk:我沒有。主要是因爲我對llvm> = 3.0沒有任何用處。我*需要* llvm-gcc和llvm 2.9(或8或7)。 – bitmask

回答

0

您系統上的/ usr/include似乎提供了32位標頭,因此編譯失敗,因爲您沒有安裝所有multilib標頭。您可能需要以與發行版補丁gcc相同的方式修補llvm-gcc以查找標題位置。

或者,您可以嘗試安裝32位標頭並嘗試使用llvm-gcc的multilib構建。

但是,最好的方式將切換到LLVM 3.1和鐺:)