【MACOS(M1)编译Risc-v版OpenOCD】

2023-11-19

准备1

  • Installing the Mac OSX Command Line Tools, 输入:
xcode-select --install 
  • Install autoconf, automake, pkg-config, libtool and texinfo.
brew install autoconf automake pkg-config libtool texinfo 

下载代码:

git clone --recursive https://github.com/riscv/riscv-openocd.git

执行顺序

进入到riscv-openocd目录下,执行:

./bootstrap
./configure
make
make install

常见问题

问题1: AC_PROG_CC_C99 告警2

在执行./bootstrap的时候可能会报warning

+ aclocal --warnings=all
+ glibtoolize --automake --copy
+ autoconf --warnings=all
+ autoheader --warnings=all
+ automake --warnings=all --gnu --add-missing --copy
Setting up submodules
Generating build system...
configure.ac:38: warning: The macro `AC_PROG_CC_C99' is obsolete.
configure.ac:38: You should run autoupdate.
./lib/autoconf/c.m4:1659: AC_PROG_CC_C99 is expanded from...
configure.ac:38: the top level
Bootstrap complete. Quick build instructions:
./configure ....

这里提示configure.ac第38行有告警。开始以为是当前目录下的configure.ac文件有不兼容的问题。其实注释掉openocd-code/src/jtag/drivers/libjaylink/configure.ac.文件的第38行就可以了。

修改后重新执行,log显示不再有告警:

+ aclocal --warnings=all
+ glibtoolize --automake --copy
+ autoconf --warnings=all
+ autoheader --warnings=all
+ automake --warnings=all --gnu --add-missing --copy
Setting up submodules
Generating build system...
Bootstrap complete. Quick build instructions:
./configure ....

问题2: texinfo 版本不匹配

brew install texinfo 后执行
export PATH=“/opt/homebrew/opt/texinfo/bin:$PATH”

问题2: libtool版本不匹配

系统目录下/usr/bin/libtool版本较旧,我的是2.4.6
用brew install libtool后会安装新的libtool,版本2.4.7,需要用环境变量执行新安装的目录。

执行下面命令可以看到安装后的信息。

> brew info libtool
...
If you need to use these commands with their normal names, you
can add a "gnubin" directory to your PATH from your bashrc like:
  PATH="/opt/homebrew/opt/libtool/libexec/gnubin:$PATH"

注意添加path后立即执行make是不生效的。原因是在config阶段会copy libtool到当前目录下,后面make阶段调用的都是当前目录下的libtool。这时需要手动删除当前目录下的libtool,然后重新执行./configure

问题3: 编译错误

编译产生如下错误:

src/flash/nor/dsp5680xx_flash.c:48:11: error: variable 'offset' set but not used [-Werror,-Wunused-but-set-variable]
        uint32_t offset = HFM_FLASH_BASE_ADDR;
                 ^
1 error generated.

看起来是可以waive掉的问题。打开configure.ac文件,找到Werror的地方,注释的这个选项。如下:

AS_IF([test "x${gcc_werror}" = "xyes"], [
   #GCC_WARNINGS="${GCC_WARNINGS} -Werror"
   GCC_WARNINGS="${GCC_WARNINGS}"
 ])

验证一下

> openocd --version
Open On-Chip Debugger 0.11.0+dev-02377-g911d68ef2-dirty (2022-09-15-09:24)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html

显示已经安装成功了。


  1. https://www.mail-archive.com/autoconf@gnu.org/msg24261.html ↩︎

  2. https://www.mobilefish.com/developer/riscv/riscv_quickguide_build_riscv_openocd.html#:~:text=%20How%20to%20build%20RISC-V%20OpenOCD%20on%20macOS.,The%20following%20tools%20are%20required%3A%0Aautoconf%2C%20automake%2C…%20More%20 ↩︎

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【MACOS(M1)编译Risc-v版OpenOCD】 的相关文章

随机推荐

  • Request processing failed;nested exception is java.lang.*

    目录 问题 分析 解决 附录 注意 参考 问题 错误1 httpClient向服务端发送请求 服务端有时候就会给客户端返回 500错误 打开服务端错误日志 报如下错误 2021 05 28 21 05 06 548 default http
  • 面试官让我讲讲分布式系统容错架构,结果。。。

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 TB级数据放在一台机器上 难啊 到底啥是分布式存储 啥又是分布式存储系统 某台机器宕机了咋办 Master节点如何感知到数据副本消失 如何复制副本保持足够副本数
  • 遥感新赛事!变化检测、图像融合等比赛全面启动!2023"国丰东方慧眼杯"遥感影像智能处理算法大赛来了!...

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 2023 国丰东方慧眼杯 遥感影像智能处理算法大赛火热进行中 遥感影像智能处理算法大赛是国家自然科学基金委信息科学部 空间信息网络基础理论与关键技术 重大研究计划指导专
  • 剑指 Offer 14- I. 剪绳子(343. 整数拆分)&& 剑指 Offer 14- II. 剪绳子 II —思路和心得

    剑指 Offer 14 I 剪绳子 和剪绳子1相同的题 思路 利用动态规划 因为每个长度大于3的绳子的最大值都可以划分为2和3的乘积 我们想将长度为 2 3的绳子的最大值先算出来 然后再利用动态规划 进步算出长度为n的绳子的最大值 clas
  • 国内比较好的软件接单平台有哪些?

    随着企业信息化水平的提高 已经有很多企业意识到了使用专用软件可以大大提高资金使用率 提高员工的工作效率 降低成本 同现有业务接轨 即软件设计思路和方法的一般过程 包括设计软件的功能和实现的算法和方法 软件的总体结构设计和模块设计 编程和调试
  • git安装配置

    安装 当前ubuntu镜像中已经安装好了git 以下步骤可以跳过 安装 sudo apt get install git 安装成功后 运行如下命令 git 配置 在ubuntu的命令行中 修改某台机器的git配置 修改为注册github时的
  • sentinel3数据批量下载——sentinelsat

    本文主要记录利用sentinelsat包批量下载sentinel2数据 转载 https blog csdn net mrzhy1 article details 107044828 方法一 直接利用sentinelsat包 1 senti
  • 什么是单向数据流

    当父组件给子组件传递数据的时候 子组件只允许进行数据的读操作 不允许做数据的改操作 因为当子组件改变父组件传递过来的数据的话会造成数据流难以理解 简单分析一下 当子组件中更改了父级的内容时 其他需要引用父级组件也会被更改 从而导致父级组件在
  • python怎么算积分_python计算积分

    python有多个方法计算积分 下面介绍其中三个 以下式为例 方法一 直接用numpy计算 start 1 stop 2 length 101 x np linspace start stop length y x 2 result sum
  • Kotlin+Compose+MVVM模式(井字棋)

    井字棋 简单的演示一下MVVM模式结合Compose的运用 Compose 组合 1 Model 2 View activity fragment composable 3 ViewModel livedata gt stateOf 声明式
  • Qt框架及模块认识

    小白自工作就接触Qt 一直都在使用Qt5 3 1版本 所以没有经历过大牛们把项目从Qt4程序到Qt5的烦恼 没准以后会碰到 对Qt所有的丰富的API表示惊叹 对于Qt的框架及模块认识也是极为模糊的 文中有不对之处希望大牛们打脸 虽然脸都已经
  • AFX_MANAGE_STATE(AfxGetStaticModuleState())的使用

    MSDN By default MFC uses the resource handle of the main application to load the resource template If you have an export
  • jsp上显示JFreeChart生成的饼状图

    文件配置
  • UE4(Unreal Engine4)在蒙太奇动画中添加音频轨道通知

    UE4系列文章目录 文章目录 UE4系列文章目录 前言 一 遇到的问题 二 操作步骤 前言 UE4 Unreal Engine4 在蒙太奇动画中添加音频轨道通知 我们想在某一帧动画中添加声音 比如我们想在动画的第13帧这里添加音效 一 遇到
  • 对于单向链表的排序与去重

    include bits stdc h using namespace std struct node int num node next class Chain public Chain head tail new node void G
  • 【计算机科学】【2017】变分推理与深度学习

    本文为荷兰阿姆斯特丹大学 作者 Kingma D P 的博士论文 共174页 在本文中 我们提出了变分 贝叶斯 推理 生成建模 表示学习 半监督学习和随机优化问题的新的解决方案 我们提出了一种有效的变分推理算法 Kingmaand Well
  • 解析目标检测全流程!附代码数据

    关注后 星标 Datawhale 每日干货 每月组队学习 不错过 Datawhale干货 作者 王程伟 算法工程师 Datawhale成员 在计算机视觉中 红外弱小目标检测是一个重要的方向 但直到近一两年 才开始运用一些深度学习的方法 深度
  • 二叉树的递归遍历、非递归遍历、层次遍历

    1 递归遍历 2 非递归遍历 3 层次遍历 1 递归遍历 在使用递归遍历的时候 每个节点会经过三次 public class PreInPosTraversal public static class Node public int val
  • Java 基础--- Object Class

    Java 基础 Object Class Object Class 结构 toString clone finalize getClass equals Object obj hashCode 什么是hashcode hashcode的主要
  • 【MACOS(M1)编译Risc-v版OpenOCD】

    MACOS编译Risc v版OpenOCD 准备 1 执行顺序 常见问题 问题1 AC PROG CC C99 告警 2 问题2 texinfo 版本不匹配 问题2 libtool版本不匹配 问题3 编译错误 验证一下 准备1 Instal