ncurses库移植到arm平台
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平台相关推荐
- 将Linux系统下交叉编译的依赖库推到ARM平台下无法建立以来关系解决
问题:平常把opencv库使用源码交叉编译好之后,从windows推到飞机里发现,该库的依赖关系都没有了,导致程序运行的时候报该库大小有问题 解决办法: 1.将linux下的库推到ARM平台中的一个文 ...
- lua脚本移植到linux平台,如何将lua移植到arm平台的linux内核
将脚本移植到内核是一件很酷的事情,lua已经被移植到NetBSD的内核中,也有一个叫lunatik的项目把lua移植到了linux内核,只可惜只支持x86,不支持arm,在网上搜索了下,没有找到现成的 ...
- python移植到arm_python移植到arm平台
1. 交叉编译Python 见Cross Compiling Python for Embedded Linux本文引用地址:http://www.eepw.com.cn/article/201611 ...
- Linux下ffmpeg开源库移植到ARM开发板。
Linux下移植ffmpeg开源库. Make install 成功后,用户安装目录下出现bin,include,lib,share目录. 进入bin目录执行file ffmpeg 查看编译出的执行程 ...
- 交叉编译 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 ...
- LVGL v7移植到ARM平台
本次移植的是LVGL v7.110 硬件平台:野火IMX6ULL 参考博客: 实践分享 | 基于framebuffer的lvgl的移植使用_嵌入式大杂烩-CSDN博客 ⭐建立一个lvgl项目 - 百问 ...
- zynq7000系列移植—JRE移植到嵌入式ARM平台(java运行在嵌入式linux)
转载:https://blog.csdn.net/weixin_39827918/article/details/78806642 前言 因公司项目需求,需要在zynq 7000平台下运行 java ...
- arm qt mysql插件_Ubuntu下编译ARM平台Qt的MySQL插件
最近需要将一个程序移植到arm平台上,程序调用了MySQL数据库,所以就牵扯到将MySQL数据库移植到ARM平台上面,所以在网上大量查阅资料.在baidu文库发现了一篇文档,是wlzxlc上传的文档名 ...
- QtCreator动态编译jsoncpp完美支持x86和arm平台
如果是做嵌入式开发. 在Qt下支持JSon最好的办法,可能不是采用qjson这个库.QJson这个库的实例只提供了x86环境下的编译方法. Installing QJson ------------- ...
最新文章
- memcache缓存服务器(nginx php memcache mysql)
- const、static、const staic理解
- hdu 4160 Dolls (最大独立)
- python生成器与迭代器。
- mac mail 删除邮件服务器,如何从Mac OS X中的邮件中删除所有电子邮件 | MOS86
- 供应商去市网维护银行账号信息_供应商信息中心是BBP系统中一项很重要的内容...
- 使用idea导入文件夹作为项目时,在项目中的文件夹可能会被隐藏
- VMware14秘钥
- 计算机3c认证 标准,计算机3C认证怎么办理,检测标准是什么?
- ESXi6.0.0 新建win7虚拟机打开电源后鼠标失灵
- 报错 Illegal instruction
- AndroidStudio 跑马灯效果不自动滚动的原因
- 阿里云服务器修改名称
- python flask自定义404错误页面
- word插入向上向下取整符号
- apache Ignite 节点生命周期事件例子
- 逻辑与() 逻辑或(||)
- Python程序员经常会遇到文件权限问题,例如在打开或写入文件时出现“PermissionError: [Errno 13] Permission denied...
- 我的计算机关闭不了怎么办,我的电脑怎么关不了机 该怎么办【图文】
- logisim 文档