当前位置: 首页 > news >正文

ncurses 6.5 交叉编译移植到OpenHarmomy

ncurses这个库被很多软件包依赖,比如cpython和htop,笔者将ncurses 6.5 交叉编译移植到OpenHarmomy分享如下

arm 64位交叉编译

# 获取ncurses-6.5源码
wget https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.5.tar.gz
tar -xvzf ncurses-6.5.tar.gz
cd ncurses-6.5# 指定oh交叉编译环境
export OHOS_SDK=/root/OpenHarmony/cix_myself_5.0.0/prebuilts/ohos-sdk/linux/12
export AS=${OHOS_SDK}/native/llvm/bin/llvm-as
export CC="${OHOS_SDK}/native/llvm/bin/clang --target=aarch64-linux-ohos"
export CXX="${OHOS_SDK}/native/llvm/bin/clang++ --target=aarch64-linux-ohos"
export LD=${OHOS_SDK}/native/llvm/bin/ld.lld
export STRIP=${OHOS_SDK}/native/llvm/bin/llvm-strip
export RANLIB=${OHOS_SDK}/native/llvm/bin/llvm-ranlib
export OBJDUMP=${OHOS_SDK}/native/llvm/bin/llvm-objdump
export OBJCOPY=${OHOS_SDK}/native/llvm/bin/llvm-objcopy
export NM=${OHOS_SDK}/native/llvm/bin/llvm-nm
export AR=${OHOS_SDK}/native/llvm/bin/llvm-ar
export CFLAGS="-fPIC -D__MUSL__=1"
export CXXFLAGS="-fPIC -D__MUSL__=1"

打补丁,删除make install阶段./run_tic.sh脚本的执行,取消terminfo数据库(可以通过linux x86下编译ncurses-6.5生成,然后推到开发板上)

--- /ncurses-6.5/misc/Makefile.in    2021-11-07 07:36:12.000000000 +0800
+++ /ncurses-6.5/misc/Makefile.in    2025-08-12 00:13:29.738652906 +0800
@@ -115,14 +115,7 @@@MAKE_DATABASE@    datadir=${datadir} \@MAKE_DATABASE@    ticdir=${ticdir} \@MAKE_DATABASE@    source=terminfo.tmp \
-@MAKE_DATABASE@    cross_compiling=@cross_compiling@ \
-@MAKE_DATABASE@    $(SHELL) ./run_tic.sh
-@MAKE_DATABASE@    @( cd $(srcdir)/tabset && \
-@MAKE_DATABASE@        $(SHELL) -c 'for i in * ; do \
-@MAKE_DATABASE@            if test -f $$i ; then \
-@MAKE_DATABASE@            echo installing $$i; \
-@MAKE_DATABASE@            $(INSTALL_DATA) $$i $(DESTDIR)$(tabsetdir)/$$i; \
-@MAKE_DATABASE@            fi; done' )
+@MAKE_DATABASE@    cross_compiling=@cross_compiling@ install.data ::@echo "finished $@"
./configure --with-shared --with-strip-program="/root/OpenHarmony/cix_myself_5.0.0/prebuilts/ohos-sdk/linux/12/native/llvm/bin/llvm-strip" --prefix=/root/OpenHarmony/temp3/ncurses_install --with-termlib --with-cxx-binding --with-widec --without-ada --disable-mixed-case --enable-pc-files --with-pkg-config-libdir=$(PREFIX)/lib/pkgconfig --host=aarch64-linux-gnu --build=x86_64-pc-linux-gnu # 参数解释
# 指定编译工具llvm-strip的路径
--with-strip-program="/root/OpenHarmony/cix_myself_5.0.0/prebuilts/ohos-sdk/linux/12/native/llvm/bin/llvm-strip"
# 指定编译产物安装目录
--prefix=/root/OpenHarmony/temp3/ncurses_installmake -j $(shell nproc) 
make install 

arm 32位的编译也是和64位一样的步骤,笔者不再赘述

http://www.dtcms.com/a/328135.html

相关文章:

  • 2025年渗透测试面试题总结-16(题目+回答)
  • Linux文件系统:从虚拟接口到物理实现的架构解析
  • 【C#】用队列构建一个对象池管理对象的创建和释放
  • NumPy 快速入门与实战教程(逐行拆解 + 专业扩展)
  • 详细了解sklearn中的CountVectorizer
  • 【c++深入系列】:万字详解模版(下)
  • [Robotics_py] 路径规划算法 | 启发式函数 | A*算法
  • MaxKB+合合信息TextIn:通过API实现PDF扫描件的文档审核
  • LRU算法与LFU算法
  • 农业智慧大屏系统 - Flask + Vue实现
  • 云计算分类与主流产品
  • iOS 文件管理全流程实战,从开发调试到数据迁移
  • 初识神经网络04——构建神经网络2
  • 软路由雷达:基于OpenWrt系统的传统逆向思路的冷门实现
  • 外部中断寄存器的实现-库函数版(STC8)
  • Android性能优化:架构层面的性能考量
  • 【第13话:泊车感知】场景检测与分割:自主泊车场景中的检测及语义分割方法
  • Linux中的tar 和crontab命令
  • 需求的透明化如何实现
  • Threejs 设置灯光照射点位置 辅助器不跟随移动
  • 基于MATLAB实现的PSO优化BP神经网络
  • Java数据结构之数组
  • 电商双 11 美妆数据分析学习报告
  • 锅气:「现炒之魂·烟火人间」
  • 【Unity】Unity中ContentSizeFitter有时无法及时自适应大小问题解决
  • Flutter 基于google验证登录实现
  • HeidiSQL 连接 MySQL 报错 10061
  • Xshell连接虚拟机密码错误解决方法
  • Ansible部署应用
  • Gradle 配置教程:与 Maven 对比详解(含完整迁移指南)