ncurses 6.5 交叉编译移植到OpenHarmomy

发布于:2025-08-18 ⋅ 阅读:(15) ⋅ 点赞:(0)

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_install


make -j $(shell nproc) 
make install 

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


网站公告

今日签到

点亮在社区的每一天
去签到