我如何检查gcc是否已成功编译程序,失败或成功但是有警告?
#!/bin/sh
string=$(gcc helloworld.c -o helloworld)
if [ string -n ]; then
echo "Failure"
else
echo "Success!"
fi
Run Code Online (Sandbox Code Playgroud)
这只检查它是否成功或(失败或编译时带有警告).
-n表示"不为空".
谢谢!
编辑如果不清楚,这是行不通的.
Ric*_*dle 20
你的病情应该是:
if [ $? -ne 0 ]
Run Code Online (Sandbox Code Playgroud)
GCC将在成功时返回零,或者在失败时返回其他内容.该行说"如果最后一个命令返回的内容不是零."
Nei*_*eil 16
if gcc helloworld.c -o helloworld; then
echo "Success!";
else
echo "Failure";
fi
Run Code Online (Sandbox Code Playgroud)
您希望bash测试返回代码,而不是输出.您的代码捕获stdout,但忽略GCC返回的值(即main()返回的值).
And*_*ico 11
要说明完全干净地编译和编译错误之间的区别,首先正常编译并测试$?.如果非零,则编译失败.接下来,使用-Werror(警告被视为错误)选项进行编译.测试$? - 如果为0,则编译时没有警告.如果非零,则编译时会显示警告.
例如:
gcc -Wall -o foo foo.c
if [ $? -ne 0 ]
then
echo "Compile failed!"
exit 1
fi
gcc -Wall -Werror -o foo foo.c
if [ $? -ne 0 ]
then
echo "Compile succeeded, but with warnings"
exit 2
else
echo "Compile succeeded without warnings"
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14488 次 |
| 最近记录: |