【发布时间】:2020-07-30 12:33:04
【问题描述】:
我的makefile 中有以下 sn-p(第一行是我在网上找到它作为候选解决方案后添加的 - 不幸的是,它不起作用):
$(shell set(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} /usr/local/lib/python3.5/dist-packages/numpy/core/include))
all: obj $(EXEC) link
$(EXEC): $(OBJS)
$(CC) $(COMMON) -I./src/factor $(CFLAGS) $^ -o $@ $(LDFLAGS)
$(CC) -shared $(COMMON) -I./src/factor $(CFLAGS) $^ -o $(SHAREDLIB) $(LDFLAGS)
$(OBJDIR)%.o: %.c $(DEPS)
$(CC) $(COMMON) -I./src/factor $(CFLAGS) -c $< -o $@
我验证了numpy/arrayobject.h 在我的系统上的/usr/local/lib/python3.5/dist-packages/numpy/core/include 中。执行make 后我得到:
gcc -I ./include -I/usr/include/python3.5 -DGPU -I/usr/local/cuda-10.0/include/ -DCUDNN -I./src/factor -Wall -Wfatal-errors -fPIC -Ofast -DGPU -DCUDNN -c ./src/ComputationPy.c -o obj/ComputationPy.o
./src/ComputationPy.c:12:31: fatal error: numpy/arrayobject.h: No such file or directory
compilation terminated.
Makefile:51: recipe for target 'obj/ComputationPy.o' failed
make: *** [obj/ComputationPy.o] Error 1
第51行对应sn-p的最后一行。
【问题讨论】:
-
你通过确保有这样的文件或目录来解决这个错误..
-
或者通过将引用更改为实际位置。这可能不是生成文件错误,而是包含错误。
-
如果你确定所有的语法都是正确的,但仍然看到这个错误,那么看看这个关于Cmake is not able to find Python-libraries的对话
-
$(shell ...)构造没有做任何有用的事情。如果您希望它将/usr/local/lib/python3.5/dist-packages/numpy/core/include添加到名为PYTHON_INCLUDE_DIRS的Make 变量中,那么这就是您的问题。请改用+=。 -
设置一个shell变量如果你不使用它是没有效果的。您的构建中需要一个
-I,包括该目录
标签: python c numpy makefile gnu-make