Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么赢了';我的Makefile是否使用指向我要编译的文件的硬链接?_Java_C++_Makefile_Compilation_Hardlink - Fatal编程技术网

Java 为什么赢了';我的Makefile是否使用指向我要编译的文件的硬链接?

Java 为什么赢了';我的Makefile是否使用指向我要编译的文件的硬链接?,java,c++,makefile,compilation,hardlink,Java,C++,Makefile,Compilation,Hardlink,这有点混乱,但是我有一个.cpp文件,我想用两种不同的方式使用它;作为使用JNI的java类调用的c类,以及作为独立的c程序。这是因为这个代码在机器之间来回移动,有时我想直接运行和编译C++代码,而不是运行java和java运行它。(C++代码有一个主要方法,它只在独立版本中运行)。 总之,我在/home/user/dev/javajni/中有文件(test.cpp)和它附带的java源代码(test.java)。但是,我还希望能够在/home/user/dev/standalone/中将其编译

这有点混乱,但是我有一个.cpp文件,我想用两种不同的方式使用它;作为使用JNI的java类调用的c类,以及作为独立的c程序。这是因为这个代码在机器之间来回移动,有时我想直接运行和编译C++代码,而不是运行java和java运行它。(C++代码有一个主要方法,它只在独立版本中运行)。 总之,我在/home/user/dev/javajni/中有文件(test.cpp)和它附带的java源代码(test.java)。但是,我还希望能够在/home/user/dev/standalone/中将其编译为独立的。在独立目录中,我有一个make文件,它只编译c程序

无论如何,当我在独立目录中对javajni中的文件进行硬链接时,makefile没有看到它,或者拒绝看到硬链接

make: *** No rule to make target `test.cpp', needed by `test'.  Stop.
在独立目录中,我使用:

ln /home/user/dev/javajni/test.cpp test.cpp
但当我把整个文件复制到上面时,效果很好

有什么大不了的?从技术上讲,原始位置的原始文件不也是inode的硬链接吗?我只想能够在一个位置更改文件,而不必来回复制和粘贴它

如果有用的话,这就是我的makefile的外观:

EX=test

all: $(EX)

.cpp.o:
    g++ -c -O3 -Wall $<

clean:
    rm -f $(EX) *.o *.a


test:test.cpp;           g++ -Wall -o $@ $^
EX=测试
全部:$(EX)
.cpp.o:
g++-c-O3-壁$<
清洁:
rm-f$(汇率)*.o*.a
test:test.cpp;g++-Wall-o$@$^

(仅供参考,为了简化起见,我确实更改了本文中的文件名和目录)

cat test.cpp是否在
standalone
文件夹中工作?检查
/home/user/dev/javajni/test.cpp
上的时间戳,检查系统时钟,看看您是否觉得奇怪。请记住,如果您创建了硬链接,并且
.o
文件较新,则不会重新编译。感谢您的快速回复。艾略特:一些奇怪的行为,起初它告诉我文件没有找到。然而,我确实改变了这一点,现在cat确实通过硬链接将文件内容输出到
独立文件夹中。我确实在
javajni
位置的文件行中做了更改,所以可能就是这样?无论如何,make程序仍然看不到它。山姆:因为这是一个单独的.cpp文件,所以没有
.o
文件,对吗?还是我遗漏了一些关于编译工作原理的基本信息?是否需要硬链接?为什么不使用软链接呢?软链接也不起作用。
cat test.cpp
是否在
standalone
文件夹中起作用?检查
/home/user/dev/javajni/test.cpp
上的时间戳,并检查系统时钟,看看您是否觉得奇怪。请记住,如果您创建了硬链接,并且
.o
文件较新,则不会重新编译。感谢您的快速回复。艾略特:一些奇怪的行为,起初它告诉我文件没有找到。然而,我确实改变了这一点,现在cat确实通过硬链接将文件内容输出到
独立文件夹中。我确实在
javajni
位置的文件行中做了更改,所以可能就是这样?无论如何,make程序仍然看不到它。山姆:因为这是一个单独的.cpp文件,所以没有
.o
文件,对吗?还是我遗漏了一些关于编译工作原理的基本信息?是否需要硬链接?为什么不使用软链接呢?软链接也不起作用。