rm *.o | g++ -c test.cpp | g++ test.o main.cpp
rm: cannot remove '*.o': No such file or directory
g++: error: test.o: No such file or directory
爲什麼呢?
rm *.o | g++ -c test.cpp | g++ test.o main.cpp
rm: cannot remove '*.o': No such file or directory
g++: error: test.o: No such file or directory
爲什麼呢?
兩個問題:(a)您可能沒有任何.o文件要刪除,並且(b)您不恰當地使用管道。請嘗試:
rm *.o &> /dev/null ; g++ -c test.cpp && g++ test.o main.cpp
^^^^^^^^^^^^^^ ^^
ignore any error only try to link if
message and compile is successful
continue regardless
第一個錯誤消息說,沒有以.o結尾的文件可以刪除。
第二條消息說g ++沒有找到要處理的文件test.o。
雖然對於第一個原因是顯而易見的,我也不會預期在這種情況下,第二消息,除非該編譯器也將輸出編譯錯誤信息:
雖然管的使用,如WhozCraig正確在他的評論中指出,沒有任何意義,據我所知,g ++不會讀取要從stdin編譯的文件,也不會將目標文件寫入stdout。
因此,要麼編譯文件(儘管事實上g ++命令放在管道中),或者您應該收到有關編譯錯誤或有關缺少輸入文件的其他錯誤消息。
對於第一次運行,請用分號替換管道符號,再次運行並張貼完整的輸出。
你也可以使用& &這裏他建議,但我不明白爲什麼,如果沒有的.o文件存在不應該進行編譯一個很好的理由。
你確定那些'|'不應該是'&&'嗎? – WhozCraig
可能是真的,但這不是原因,至少對於第一個錯誤消息... – user1934428