You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决make编译错误:numpy/arrayobject.h: 没有该文件或目录?

解决Makefile中无法找到numpy头文件的问题

你尝试用$(shell set(...))来添加numpy的include路径,但这个方法行不通,原因很简单:

  • $(shell)会启动一个子shell执行命令,子shell里的环境变量修改不会传递回Makefile本身,所以你的PYTHON_INCLUDE_DIRS变量根本没被更新。
  • 从报错的编译命令也能看出来:gcc ... -I/usr/include/python3.5 ...里并没有包含numpy的路径,编译器自然找不到numpy/arrayobject.h。

正确的解决方案

你需要直接在Makefile中把numpy的include路径添加到编译参数里,有两种简单的方式:

方式1:直接修改CFLAGS变量

找到你Makefile中定义CFLAGS的地方,把numpy的路径追加进去:

# 直接给CFLAGS添加numpy的include路径
CFLAGS += -I/usr/local/lib/python3.5/dist-packages/numpy/core/include

方式2:单独定义numpy路径变量,再合并到编译规则

如果想让代码更清晰,可以单独定义变量,再在编译规则中引用:

# 单独定义numpy的include路径
NUMPY_INCLUDE = /usr/local/lib/python3.5/dist-packages/numpy/core/include

# 修改你的编译规则,加入numpy路径
$(OBJDIR)%.o: %.c $(DEPS)
	$(CC) $(COMMON) -I./src/factor -I$(NUMPY_INCLUDE) $(CFLAGS) -c $< -o $@

验证修改效果

修改后重新执行make,编译命令里应该会出现-I/usr/local/lib/python3.5/dist-packages/numpy/core/include,这样编译器就能找到numpy/arrayobject.h头文件了。

另外,记得删掉那行没用的$(shell set(...))代码哦。

内容的提问来源于stack exchange,提问作者ScruffyFluffy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 17:03:12