2013-08-20 200 views
1

我正在嘗試爲ARM體系結構(特別是Raspberry Pi)交叉編譯GNU科學庫(gsl,v1.16)。我已經使用了以下配置;交叉編譯用於ARM的GSL 1.16

CROSS=armv6j-hardfloat-linux-gnueabi 
./configure --host=x86_64-pc-linux-gnu --build=$CROSS --target=$CROSS \ 
CC=/usr/bin/$CROSS-gcc \ 
CXX=/usr/bin/$CROSS-g++ \ 
AR=/usr/bin/$CROSS-ar \ 
RANLIB=/usr/bin/$CROSS-ranlib \ 
CFLAGS="-march=armv6 -mfloat-abi=hard -mfpu-vfp" 

我收到以下錯誤信息:

libtool: compile: /usr/bin/armv6j-hardfloat-linux-gnueabi-gcc 
-DHAVE_CONFIG_H -I. -I.. -I.. -march=armv6 -mfloat-abi=hard -mfpu=vfp 
-MT read.lo -MD -MP -MF .deps/read.Tpo -c read.c -o read.o 
In file included from fp.c:10:0: 
fp-gnux86.c: In function 'gsl_ieee_set_mode': 
fp-gnux86.c:42:15: error: '_FPU_SINGLE' undeclared (first use in this function) 
fp-gnux86.c:42:15: note: each undeclared identifier is reported only once for each function it appears in 
fp-gnux86.c:45:15: error: '_FPU_DOUBLE' undeclared (first use in this function) 
fp-gnux86.c:48:15: error: '_FPU_EXTENDED' undeclared (first use in this function) 
fp-gnux86.c:57:15: error: '_FPU_RC_NEAREST' undeclared (first use in this function) 
fp-gnux86.c:60:15: error: '_FPU_RC_DOWN' undeclared (first use in this function) 
fp-gnux86.c:63:15: error: '_FPU_RC_UP' undeclared (first use in this function) 
fp-gnux86.c:66:15: error: '_FPU_RC_ZERO' undeclared (first use in this function) 
fp-gnux86.c:76:13: error: '_FPU_MASK_DM' undeclared (first use in this function) 
make[2]: *** [fp.lo] Error 1 

我是一個64位Linux的Gentoo系統上編譯。我使用Gentoo工具鏈來設置我的交叉編譯器。任何指向我所做錯誤的指針都非常感謝。

在此先感謝!

回答

2

您的配置不正確,要交叉編譯build =(您的x86 gcc)和host = target =(arm-tool-chain)。請嘗試以下命令。

./configure --host=armv6j-hardfloat-linux-gnueabi --build=x86_64-pc-linux-gnu --target=armv6j-hardfloat-linux-gnueabi \ CFLAGS="-march=armv6 -mfloat-abi=hard -mfpu-vfp"

+0

非常感謝您指出我的錯誤。事實上,我混淆了主機和構建標籤。使用你的建議,我已經能夠成功交叉編譯GSL。再次感謝。 –

0

我不能保證它可以工作,但使用emerge wrapper可能會有更好的運氣。

armv6j-hardfloat-linux-gnueabi-emerge gsl 

我工作的腳本,讓這樣的事情更可靠的集合,但不幸的是我得到了這是交叉編譯Python模塊地獄糾結起來,他再也沒有進入釋放狀態。