在nios平台交叉编译libreadline库

一、 ./configure –host=nios2-linux-gnu CC=nios2-linux-gnu-gcc  –prefix=$PWD/_build

报错: checking for wcwidth broken with unicode combining characters… configure: error: in `/home/fangshuai/work/zebra/libs/readline-6.3′: configure: error: cannot run test program while cross compiling

原因: configure脚本验证编译工具是通过编译并运行一个测试程序。由于是交叉编译,当然是运行不了的。

解决方法: 打开configure文件找到报错的地方如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
$as_echo "$as_me:${as_lineno-$LINENO}: checking for wcwidth broken with unicode combining characters" >&5
$as_echo_n "checking for wcwidth broken with unicode combining characters... " >&6;
}
if ${bash_cv_wcwidth_broken+:}
false;
then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes;
then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wcwidth broken with unicode combining characters" >&5
{ { $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;
}

可见变量bash_cv_wcwidth_broken,我们可以利用cache文件将该变量置真:

echo bash_cv_wcwidth_broken=yes > nioslinux.cache

重新执行configure: ./configure –host=nios2-linux-gnu CC=nios2-linux-gnu-gcc  –prefix=$PWD/_build  –cache-file=nioslinux.cache

 

二、编译:

make

三、导出编译成果:

make install
四、测试验证:

将编译出的动态库与静态库拷贝到交叉编译工具目录下,将include下的readline目录拷贝到交叉编译工具的include目录下。

随便写个程序,test.c 编译下试试:nios2-linux-gnu-gcc test.c -o test -lreadline 恭喜你编译不过是不是 – -!

是的,还需要ncurses, 试下:nios2-linux-gnu-gcc test.c -o test -lreadline  -lncurses 还是编不过对不,还得交叉编译ncurses。

下一篇再说

点击查看原图

最后修改日期:2020年5月26日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。