作者:Sam (甄峰)
sam_code@hotmail.com
使用autoconf
交叉编译时,会遇到非常多异常。Sam一向是强行改过来就好。但也知道这不是正规做法。现在把一些做法记录如下:
问题1:
$ CC=arm-linux-gnueabihf-gcc ./configure
--host=arm-linux
报错:
checking
for growing stack pointer... configure: error: in
`/home/sam/work/current/Source/Robot_ROS/Bluetooth/3rdParty/glib-2.51.0':
configure:
error: cannot run test program while cross
compiling
不能使用交叉编译器编译测试程序。
首先打开configure,找到growing
stack部分。
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for growing
stack pointer" >&5
$as_echo_n "checking for growing stack pointer... "
>&6; }
if ${glib_cv_stack_grows+:} false; then :
$as_echo_n "(cached) "
>&6
else
if test "$cross_compiling" = yes; then :
{ { $as_echo "$as_me:${as_lineno-$LINENO}:
error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot run test program while cross
compiling
See \`config.log' for more details" "$LINENO" 5; }
可以看到,如果变量glib_cv_stack_grows
为false. 则正常通过。
所以可以如下操作:
$echo glib_cv_stack_grows=no>>arm-linux.cache
$CC=arm-linux-gnueabihf-gcc
./configure --host=arm-linux --cache-file=arm-linux.cache
问题解决。