分类: LINUX
2009-01-22 16:38:51
在交叉编译的时候总是使用
export PREFIX=/home/usr/liuhongbing/tmp/install
export ARCH=mips
export CROSS_COMPILE=c2-linux-
export CC=${CROSS_COMPILE}gcc
export CXX=${CROSS_COMPILE}g++
export AR=${CROSS_COMPILE}ar
export RANLIB=${CROSS_COMPILE}ranlib
export NM=${CROSS_COMPILE}nm
export AS=${CROSS_COMPILE}as
export LD=${CROSS_COMPILE}ld
./configure --prefix=$PREFIX --build=i686 --target=mips-linux --host=mips-linux
但是在CONFIGURE中有很多的测试程序是不可以在HOST上运行的就会出现: error: cannot run test program while cross compiling 类似的错误,可以使用CACHEFILE解决这个问题。
我是这样解决的
第一步:记录下错误的地方如:checking abstract socket namespace... configure: error: cannot run test program while cross compiling
注意到abstract socket namespace在configure中查找abstract socket可以看到类似这样的结构
echo "$as_me:$LINENO: checking abstract socket namespace" >&5
echo $ECHO_N "checking abstract socket namespace... $ECHO_C" >&6
if test "${ac_cv_have_abstract_sockets+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
其中ac_cv_have_abstract_sockets是我们要查找的变量
使用echo ac_cv_have_abstract_sockets=yes > mips-linux.cache
然后
./configure --prefix=$PREFIX --build=i686 --target=mips-linux --host=mips-linux --cache-file=mips-linux.cache
这样就搞定了