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

移植bash到openharmony

1.交叉工具链

下载地址:

http://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist

进入ohos-sdk-full,下载一个sdk版本,这里下载的版本是version-Master_Version-OpenHarmony_5.0.0.35-20240805_020232-ohos-sdk-full.tar.gz。

解压

tar -xf version-Master_Version-OpenHarmony_5.0.0.35-20240805_020232-ohos-sdk-full.tar.gz
cd ohos-sdk
cd linux
unzip native-linux-x64-5.0.0.37-Canary2.zip -d /home/ufo/arm/rk/openharmony/tools/native-5.0

配置环境变量

export OHOS_SDK=/home/ufo/arm/rk/openharmony/tools/native-5.0 # 此处是我的ohos_sdk解压目录,请替换为你自己的解压目录
export AR=${OHOS_SDK}/llvm/bin/llvm-ar
export AS=${OHOS_SDK}/llvm/bin/llvm-as
export LD=${OHOS_SDK}/llvm/bin/ld.lld
export RANLIB=${OHOS_SDK}/llvm/bin/llvm-ranlib
export STRIP=${OHOS_SDK}/llvm/bin/llvm-strip
export CC=${OHOS_SDK}/llvm/bin/clang
export CXX=${OHOS_SDK}/llvm/bin/clang++
export NM=${OHOS_SDK}/llvm/bin/llvm-nm
export OBJDUMP=${OHOS_SDK}/llvm/bin/llvm-objdump
export OBJCOPY=${OHOS_SDK}/llvm/bin/llvm-objcopy
export CFLAGS="-fPIC -D__MUSL__=1 --target=aarch64-linux-ohos"
export CXXFLAGS="-fPIC -D__MUSL__=1 --target=aarch64-linux-ohos"

使用过其他版本的native,例如version-Master_Version-OpenHarmony_4.0.10.5-20230824_120941-ohos-sdk-full_monthly.tar.gz,但是编译出来的bash程序运行有问题,会报Signal 11错误。

2.下载bash源码

Index of /gnu/bash

版本使用bash-5.2.32

3.交叉编译bash源码
tar -xf bash-5.2.32.tar.gz
cd bash-5.2.32
./configure --prefix=${PWD}/_install --host=aarch64-linux --target=aarch64-linux-ohos --enable-static-link --enable-history --without-bash-malloc
make -j$(nproc)
make install

编译成功后在bash-5.2.32源码的_install/bin目录下生成可以执行文件bash。

4.测试

把bash-5.2.32源码下的_install/bin/bash文件复制到板卡

hdc shell mount -o rw,remount /
hdc file send Z:\bash /bin/
hdc shell chmod +x /bin/bash

执行测试

hdc shell
#
# bash
bash-5.2#

相关文章:

  • Django后端架构开发:Django 与 Celery 的深度集成
  • VirtualBox上的Oracle Linux虚拟机安装Docker全流程
  • Nginx服务器申请及配置免费SSL证书
  • RabbitMQ 消息可靠保障
  • 通过FileReader API获取上传音频的长度
  • 【Python系列】 并发编程在数据处理中的应用
  • 第二届海南大数据创新应用大赛 - 算法赛道冠军比赛攻略_海南新境界队
  • 设计模式22-迭代器模式
  • 【运维】深入理解 Linux 中的 `mv` 命令,使用 `mv` 移动所有文件但排除特定文件或文件夹
  • SQL Server数据库 创建表,和表的增删改查
  • 浮毛怎么去掉比较方便?最最高效解决办法宠物空气净化器分享
  • 【C++例题 / 训练】二分算法(模板 例题)
  • 【本社翻译】Unity官方XR开发电子书
  • uniapp去掉页面导航条
  • 利用贝叶斯和决策树 来进行医疗诊断的
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • C# 免费离线人脸识别 2.0 Demo
  • chrome扩展demo1-小时钟
  • conda常用的命令
  • CSS 专业技巧
  • in typeof instanceof ===这些运算符有什么作用
  • Java 内存分配及垃圾回收机制初探
  • JavaScript-Array类型
  • Java比较器对数组,集合排序
  • JS笔记四:作用域、变量(函数)提升
  • Koa2 之文件上传下载
  • React+TypeScript入门
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • mysql面试题分组并合并列
  • 大数据全解:定义、价值及挑战
  • 组复制官方翻译九、Group Replication Technical Details
  • ​如何防止网络攻击?
  • ​什么是bug?bug的源头在哪里?
  • #HarmonyOS:Web组件的使用
  • (2024)docker-compose实战 (8)部署LAMP项目(最终版)
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (LeetCode 49)Anagrams
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (排序详解之 堆排序)
  • (四) 虚拟摄像头vivi体验
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转载)Google Chrome调试JS
  • .naturalWidth 和naturalHeight属性,
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET实现之(自动更新)
  • /proc/vmstat 详解
  • @ModelAttribute使用详解
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [ C++ ] 类和对象( 下 )
  • [AR]Vumark(下一代条形码)