当前位置: 首页 > 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.xdnf.cn/news/1285597.html

相关文章:

  • 【软考中级网络工程师】知识点之 IP QoS 技术
  • 小红书笔记信息获取_实在智能RPA源码解读
  • 【Redis优化深度剖析:如何通过读写分离提升系统性能】
  • 【限时分享:Hadoop+Spark+Vue技术栈电信客服数据分析系统完整实现方案
  • Rocky Linux 10 部署 Kafka 集群
  • Bevy渲染引擎核心技术深度解析:架构、体积雾与Meshlet渲染
  • AI-调查研究-49-大数据调研报告 发展历程:从概念诞生到多元化生态1997-2025
  • msyql中,max_connections和max_user_connections区别
  • 【DL】深层神经网络
  • 记录docker使用kong consul postgresql配置dns异常解决
  • SQL180 每类试卷得分前3名
  • 【Redis在在线表单提交防重复机制中的应用策略】
  • 移动端调用大模型详解
  • Web学习笔记5
  • [git] 重配ssh key | 解决冲突
  • 一键生成 Android 适配不同分辨率尺寸的图片
  • Wireshark专家模式定位网络故障:14种TCP异常深度解剖
  • Ceph存储池参数中pg_num和pgp_num的关系
  • 终端安全检测和防御技术
  • 华为发布AI推理新技术,降低对HBM内存依赖
  • 负载均衡详解
  • 纯CSS+JS制作抽奖大转盘
  • C#教程之NPOI读写excel文件XLS,XLSX格式
  • 【vue(二)Vuex】
  • damn the jvm again(2)
  • 《Qwen2.5-VL 》论文精读笔记
  • 【测试】Bug+设计测试用例
  • 【Bug经验分享】由jsonObject-TypeReference引发的序列化问题
  • 无人机在环保监测中的应用:低空经济发展的智能监测与高效治理
  • 从0开始的中后台管理系统-5(菜单的路径绑定以及角色页面的实现)