即使程序无法编译/加载,g ++是否仍会生成输出文件?

时间:2010-10-12 22:52:09

标签: c++ compiler-construction g++

我正在使用以下命令通过perl脚本编译一些C ++程序:

g++ -o out `find ./ -iname "*.h" -or -iname "*.cpp"`

无论程序是否成功编译,这似乎每次都会生成一个out文件 每当脚本尝试运行这样的程序时,它都会获得权限错误(因为我以root运行,所以很奇怪。) 这是否准确,如果是,我该如何预防呢?

感谢。

3 个答案:

答案 0 :(得分:3)

标题问题的答案(“即使程序无法编译/加载,g ++是否仍会生成输出文件?”)不是:

% echo blah > test.cpp
% g++ -o out test.cpp
test.cpp:1: error: expected constructor, destructor, or type conversion at end of input
% ls *out*
/bin/ls: *out*: No such file or directory
%

答案 1 :(得分:1)

我解决了如下:
出于某种原因,尝试使用-o out输出可执行文件似乎强制创建文件,即使在编译失败后(在我看来)。

答案 2 :(得分:0)

g++ -o out.tmp `find ./ -iname "*.h" -or -iname "*.cpp"` && mv out.tmp out