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位一样的步骤,笔者不再赘述