【发布时间】:2016-10-18 01:24:08
【问题描述】:
我有以下makefile(用于c++)
LDLIBS=$(shell root-config --libs)
INCLUDE= -I/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/include \
-I/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/include/darwin \
foo: foo.o
$(CXX) -shared -fPIC $(LDLIBS) $(INCLUDE) -o foo.o foo.cpp
foo.cpp 包含以下内容
#include <jvmti.h>
如果我手动运行"g++ -shared -fPIC -I..." 命令,它将按预期生成foo.o。
但是当我运行make 时,我会得到这个错误
$ make
c++ -c -o foo.o foo.cpp
lib_track_npe.cpp:1:10: fatal error: 'jvmti.h' file not found
#include <jvmti.h>
^
1 error generated.
make: *** [foo.o] Error 1
谁能告诉我我在makefile中做错了什么?
谢谢
【问题讨论】:
-
手动输入
g++ ...后输入的命令:pwd可以吗? -
pwd 是当前目录(foo.cpp 所在的位置)。请不要在我的
-I中指定了一个绝对路径。因此,我在哪里称呼它并不重要 -
是的,应该。手动传递 -I.. 这意味着父目录在搜索路径中
-
哦,实际上
...(即省略号)的意思是“等”;) -
哦,我明白了。所以,在你原来的makefile中,我猜你只是错误地声明了你的规则。我想应该是:
foo.o : foo.cpp