1、从ncurses官网下载源码 https://ftp.gnu.org/pub/gnu/ncurses/

2、解压后进入源码目录,初始化交叉编译环境,imx6系列的CPU初始化方法如下:

. /opt/fsl-imx-fb/4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueab

查看配置参数

tuo@ncurses-6.2$ echo $CONFIGURE_FLAGS
--target=arm-poky-linux-gnueabi --host=arm-poky-linux-gnueabi --build=x86_64-linux --with-libtool-sysroot=/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi

3、配置ncurses源码,可直接使用上述变量作为配置参数,由于默认使用系统自带的strip命令(X86-64)裁剪目标文件(ARM),会导致编译失败,这里先禁止使用strip命令裁剪(--disable-stripping)。如果因为存储空间有限,需要裁剪,可以在Makefile中指定使用arm-poky-linux-gnueabi-strip命令,或者等编译通过后,再手动用arm-poky-linux-gnueabi-strip命令裁剪,这里不过多展开。

tuo@ncurses-6.2$ ./configure $CONFIGURE_FLAGS --disable-stripping --prefix=/home/tuo/sdb1/ncurses-6.2/build --with-shared

配置成功后的输出:

4、编译,make -j4,编译成功后输出:

5、make install

由错误日志

/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/tic: 1: /opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/tic: Syntax error: word unexpected (expecting ")")
? tic could not build /usr/share/terminfo

可知:tic命令格式不对,无法执行,这里要用系统自带的tic(x86),而不是交叉编译器的tic命令(arm)

PC中包含arm平台和本机x86平台的tic命令

查看环境变量

tuo@ncurses-6.2$ echo $PATH
/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/../x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-uclibc:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-musl:/usr/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/../x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-uclibc:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-musl:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/../x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-uclibc:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-musl:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/../x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-uclibc:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-musl:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/../x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-uclibc:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-musl:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/../x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-uclibc:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-musl:/home/tuo/bin:/home/tuo/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

从PATH内容可以看出,/opt/.../usr/bin在PATH中的位置比/usr/bin前。因此,在搜索tic时,最先找到的是/opt/.../usr/bin/tic,而不是/usr/bin/tic,这才引起了先前的错误。解决方法:只要让先找到的tic是/usr/bin/tic就可以避免该错误。

tuo@ncurses-6.2$ PATH=/usr/bin:$PATH
tuo@ncurses-6.2$ echo $PATH
/usr/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/../x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-uclibc:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-musl:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/../x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-uclibc:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-musl:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/../x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-uclibc:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-musl:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/../x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-uclibc:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-musl:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/sbin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/../x86_64-pokysdk-linux/bin:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-uclibc:/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-musl:/home/tuo/bin:/home/tuo/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

6、make distclean后重新configure并make,然后继续make install,报错如下:

查看系统的 ncurses版本:

不知道是不是跟系统的ncurses版本有关系,先换成5.9版本的ncurses源码编译:

1、前面步骤相同,当make 的时候,报错:

解决办法:

export CPPFLAGS="-P"

2、重新执行configure,make编译通过

3、 make install时报错:

跟上面编译6.2版本的解决方法相同:

4、make distclean后重新configure并make,然后继续make install,编译通过:

datadir=/home/tuo/sdb1/ncurses-5.9/build/share \
ticdir=/usr/share/terminfo \
source=terminfo.tmp \
cross_compiling=yes \
/bin/sh ./run_tic.sh
** Building terminfo database, please wait...
Running /usr/bin/tic to install /usr/share/terminfo ...You may see messages regarding extended capabilities, e.g., AX.These are extended terminal capabilities which are compiledusingtic -xIf you have ncurses 4.2 applications, you should read the INSTALLdocument, and install the terminfo without the -x option.1600 entries written to /home/tuo/.terminfo
** built new /usr/share/terminfo
ln: 无法创建符号链接'/usr/lib/terminfo': 权限不够
** could not sym-link /usr/lib/terminfo for compatibility
installing std
installing stdcrt
installing vt100
installing vt300
/usr/bin/install -c ncurses-config /home/tuo/sdb1/ncurses-5.9/build/bin/ncurses5-config
make[1]: Leaving directory '/home/tuo/sdb1/ncurses-5.9/misc'
cd c++ && make DESTDIR="" install
make[1]: Entering directory '/home/tuo/sdb1/ncurses-5.9/c++'
/usr/bin/install -c -m 644 ../lib/libncurses++.a /home/tuo/sdb1/ncurses-5.9/build/lib/libncurses++.a
installing ./cursesapp.h in /home/tuo/sdb1/ncurses-5.9/build/include/ncurses
installing ./cursesf.h in /home/tuo/sdb1/ncurses-5.9/build/include/ncurses
installing ./cursesm.h in /home/tuo/sdb1/ncurses-5.9/build/include/ncurses
installing ./cursesp.h in /home/tuo/sdb1/ncurses-5.9/build/include/ncurses
installing ./cursesw.h in /home/tuo/sdb1/ncurses-5.9/build/include/ncurses
installing ./cursslk.h in /home/tuo/sdb1/ncurses-5.9/build/include/ncurses
installing etip.h in /home/tuo/sdb1/ncurses-5.9/build/include/ncurses
make[1]: Leaving directory '/home/tuo/sdb1/ncurses-5.9/c++'

5、验证输出文件是否为arm平台:

tuo@ncurses-5.9$ file build/lib/libncurses.so.5.9
build/lib/libncurses.so.5.9: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=344449c1a62612c5f8c86dce8b7f7be9cd5eaf1d, not stripped

6、拷贝输出文件到交叉编译工具(方便移植其它库)及开发板的文件系统中:

tuo@ncurses-5.9$ sudo cp build/* /opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/ -rf

ncurses库移植到arm平台相关推荐

  1. 将Linux系统下交叉编译的依赖库推到ARM平台下无法建立以来关系解决

    问题:平常把opencv库使用源码交叉编译好之后,从windows推到飞机里发现,该库的依赖关系都没有了,导致程序运行的时候报该库大小有问题 解决办法: 1.将linux下的库推到ARM平台中的一个文 ...

  2. lua脚本移植到linux平台,如何将lua移植到arm平台的linux内核

    将脚本移植到内核是一件很酷的事情,lua已经被移植到NetBSD的内核中,也有一个叫lunatik的项目把lua移植到了linux内核,只可惜只支持x86,不支持arm,在网上搜索了下,没有找到现成的 ...

  3. python移植到arm_python移植到arm平台

    1. 交叉编译Python 见Cross Compiling Python for Embedded Linux本文引用地址:http://www.eepw.com.cn/article/201611 ...

  4. Linux下ffmpeg开源库移植到ARM开发板。

    Linux下移植ffmpeg开源库. Make install 成功后,用户安装目录下出现bin,include,lib,share目录. 进入bin目录执行file ffmpeg 查看编译出的执行程 ...

  5. 交叉编译 for arm-linux-gcc... no,QT4.8.6、tslib库移植到arm上配置出错!求大神指点

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 操作系统:Ubuntu14.04 LTS ; Qt版本:Qt4.8.6 for embedded 交叉编译器:arm-linux-gcc-v6-vfp-2 ...

  6. LVGL v7移植到ARM平台

    本次移植的是LVGL v7.110 硬件平台:野火IMX6ULL 参考博客: 实践分享 | 基于framebuffer的lvgl的移植使用_嵌入式大杂烩-CSDN博客 ⭐建立一个lvgl项目 - 百问 ...

  7. zynq7000系列移植—JRE移植到嵌入式ARM平台(java运行在嵌入式linux)

    转载:https://blog.csdn.net/weixin_39827918/article/details/78806642 前言 因公司项目需求,需要在zynq 7000平台下运行 java ...

  8. arm qt mysql插件_Ubuntu下编译ARM平台Qt的MySQL插件

    最近需要将一个程序移植到arm平台上,程序调用了MySQL数据库,所以就牵扯到将MySQL数据库移植到ARM平台上面,所以在网上大量查阅资料.在baidu文库发现了一篇文档,是wlzxlc上传的文档名 ...

  9. QtCreator动态编译jsoncpp完美支持x86和arm平台

    如果是做嵌入式开发. 在Qt下支持JSon最好的办法,可能不是采用qjson这个库.QJson这个库的实例只提供了x86环境下的编译方法. Installing QJson ------------- ...

最新文章

  1. memcache缓存服务器(nginx php memcache mysql)
  2. const、static、const staic理解
  3. hdu 4160 Dolls (最大独立)
  4. python生成器与迭代器。
  5. mac mail 删除邮件服务器,如何从Mac OS X中的邮件中删除所有电子邮件 | MOS86
  6. 供应商去市网维护银行账号信息_供应商信息中心是BBP系统中一项很重要的内容...
  7. 使用idea导入文件夹作为项目时,在项目中的文件夹可能会被隐藏
  8. VMware14秘钥
  9. 计算机3c认证 标准,计算机3C认证怎么办理,检测标准是什么?
  10. ESXi6.0.0 新建win7虚拟机打开电源后鼠标失灵
  11. 报错 Illegal instruction
  12. AndroidStudio 跑马灯效果不自动滚动的原因
  13. 阿里云服务器修改名称
  14. python flask自定义404错误页面
  15. word插入向上向下取整符号
  16. apache Ignite 节点生命周期事件例子
  17. 逻辑与() 逻辑或(||)
  18. Python程序员经常会遇到文件权限问题,例如在打开或写入文件时出现“PermissionError: [Errno 13] Permission denied...
  19. 我的计算机关闭不了怎么办,我的电脑怎么关不了机 该怎么办【图文】
  20. logisim 文档

热门文章

  1. Android DanmakuFlameMaster的踩坑方式
  2. AD10 画封装经验【突出长度的问题】【 PCB中任意形状封装修改网络名】
  3. LORAWAN地磁传感器的应用
  4. 二维码登录(三)扫码登录
  5. cisco 3560x snmp 详细说明
  6. ARM硬件平台上基于UCOS移植Lwip网络协议栈
  7. 两Excel表如何进行关联汇总
  8. 洛达照妖镜!检测真假洛达1562M、1562A、1562F蓝牙耳机的最新方法
  9. 消息总线RabbitMQ
  10. 消息总线(MQ)知多少