为什么此命令失败?rm 和 g++ 命令?
why this command fail? rm and g++ command?
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 文件的情况下不应该执行编译的充分理由。
相关文章:
- 从命令行c++发送文本文件名
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 使用QProcess执行命令,并将结果存储在QStringList中
- 数组长度,为什么从命令行获取时不能使用它?
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- clang整洁10忽略了我的NOLINT命令
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- 如何使用ESP8266向谷歌主页发送命令
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 通过 Openssl 命令行加密,通过 c++ 解密
- CMake "--target install"无需"--build"命令行
- Gstreamer 管道从命令 lne 到 c 代码
- 自动"yes"到 Popen SSH 命令
- 更改命令行 qt5 源代码构建配置的正确/快速方法