Ubuntu升级Python报错pydtrace_probes.h: No such file or directory

系统环境:Ubuntu

在华为云(https://mirrors.huaweicloud.com/python/3.9.2/)下载了3.9.2版本的离线包以安装Python时,遇到以下问题报错:

In file included from Python/ceval.c:30:0:
./Include/pydtrace.h:11:10: fatal error: pydtrace_probes.h: No such file or directory
 #include "pydtrace_probes.h"
          ^~~~~~~~~~~~~~~~~~~
compilation terminated.
Makefile:1782: recipe for target 'Python/ceval.o' failed
make[3]: *** [Python/ceval.o] Error 1
make[3]: Leaving directory '/home/wang/Downloads/Python-3.9.2'
Makefile:531: recipe for target 'build_all_generate_profile' failed
make[2]: *** [build_all_generate_profile] Error 2
make[2]: Leaving directory '/home/wang/Downloads/Python-3.9.2'
Makefile:505: recipe for target 'profile-gen-stamp' failed
make[1]: *** [profile-gen-stamp] Error 2
make[1]: Leaving directory '/home/wang/Downloads/Python-3.9.2'
Makefile:516: recipe for target 'profile-run-stamp' failed
make: *** [profile-run-stamp] Error 2

尝试网上搜索解决此问题,并没有找到相关材料,最终经过研究,修改pydtrace.h文件解决此问题

有关Dtrace的介绍如下:(来源百度百科)
DTrace(全称Dynamic Tracing),也称为动态跟踪,是由 Sun™ 开发的一个用来在生产和试验性生产系统上找出系统瓶颈的工具,可以对内核(kernel)和用户应用程序(user application)进行动态跟踪并且对系统运行不构成任何危险的技术。在任何情况下它都不是一个调试工具, 而是一个实时系统分析寻找出性能及其他问题的工具。 DTrace 是个特别好的分析工具,带有大量的帮助诊断系统问题的特性。还可以使用预先写好的脚本利用它的功能。 用户也可以通过使用 DTrace D 语言创建他们自己定制的分析工具, 以满足特定的需求。

很显然我们并不需要这个功能,因此可以尝试屏蔽该头文件的引用

找到报错的文件,内容如下:

//原始内容
#ifdef WITH_DTRACE

//修改后的内容
#ifndef WITH_DTRACE

#include "pydtrace_probes.h"

/* pydtrace_probes.h, on systems with DTrace, is auto-generated to include
   `PyDTrace_{PROBE}` and `PyDTrace_{PROBE}_ENABLED()` macros for every probe
   defined in pydtrace_provider.d.

   Calling these functions must be guarded by a `PyDTrace_{PROBE}_ENABLED()`
   check to minimize performance impact when probing is off. For example:

       if (PyDTrace_FUNCTION_ENTRY_ENABLED())
           PyDTrace_FUNCTION_ENTRY(f);
*/

#else

在配置python离线包时,配置内容明明是no,但不知为何仍会引用头文件

checking for --with-valgrind... no
checking for --with-dtrace... no
checking for dlopen... yes
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
很抱歉,我之前的回答有误。在最新版本的 pyOCD 中,`find_all_connected_probes()` 方法已被删除。你可以使用 `pyocd.probe.get_probe_list()` 方法来获取已连接的调试器列表,并选择其中一个来创建板子接口。 以下是一个示例代码,演示如何选择已连接的板子并设置频率: ```python import pyocd # 获取所有已连接的调试器 probes = pyocd.probe.get_probe_list() if probes: # 选择第一个调试器 probe = probes[0] # 创建板子接口 board = probe.session.board # 设置频率为1MHz board.target.set_clock_frequency(1000000) # 其他 pyOCD 操作 # ... # 释放接口资源 board.target.session.probe.reset() board.target.session.probe.close() else: print("未找到已连接的调试器") ``` 在代码中,我们首先使用 `get_probe_list()` 方法获取所有已连接的调试器列表。然后,我们选择第一个调试器,并使用 `session.board` 属性来创建板子接口。接下来,我们使用 `set_clock_frequency()` 方法将频率设置为 1MHz。然后,你可以执行其他 pyOCD 操作。最后,使用 `reset()` 方法重置调试器,并使用 `close()` 方法释放接口资源。 请注意,具体的接口和方法名称可能因 pyOCD 版本而有所不同。你可以根据实际情况进行调整。此外,请确保已经安装了 pyOCD 库,可以使用以下命令进行安装: ```shell pip install pyocd ``` 同时,你还可以参考 pyOCD 的文档和示例代码,以了解更多关于使用 pyOCD 的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值