将bash变量作为参数传递给gcc

时间:2015-10-29 14:57:21

标签: c bash shell gcc compiler-optimization

我的目标是将一些变量值传递给gcc。这是我的例子:

命令:

gcc -Q -fvpt -fwrapv -fwhole-program --help=optimizers 

输出:

-fvpt                       [enabled] 
-fwhole-program             [enabled] 
-fwrapv                     [enabled] 

,当我跑步时:

var="-fvpt -fwrapv -fwhole-program"; gcc -Q $(var) --help=optimizers 

输出:

-fvpt                       [disabled] 
-fwhole-program             [disabled] 
-fwrapv                     [disabled] 

为什么它不起作用?

3 个答案:

答案 0 :(得分:2)

$(var)尝试执行命令var并在命令行中使用其输出。要在bash中扩展变量,可以使用$var

var="-fvpt -fwrapv -fwhole-program"; gcc -Q $var --help=optimizers 

答案 1 :(得分:1)

var="-fvpt -fwrapv -fwhole-program" && gcc -Q $var --help=optimizers应该适合你。

答案 2 :(得分:0)

You should use an array, not a flat string, to store multiple options. (For the example, a string works, but it will fail for arguments that themselves contain whitespace, and may fail for options containing pattern metacharacters.)

args=(-fvpt -fwrapv -fwhole-program)
gcc -Q "${args[@]}" --help=optimizers