在我们的源文件中通常有类似这样的版本字符串:
static const char srcvers[] = "VERSION/foo.c/1.01/09.04.15";
当该字符串未被优化时,在某些情况下它非常有用,因为可以通过简单地调用strings a.out | grep VERSION
来确定每个源文件与可执行文件链接的版本。
不幸的是,gcc(使用“-O”选项)会对其进行优化。所以我的问题是,是否有一种简单的方法(编译器开关会很好),使gcc保留该变量(它的名称始终相同),而不关闭其他任何优化。
编辑
我认为这个问题与那个问题的不同之处在于,我希望找到一种解决方案,而无需触及数千个源文件。
-v
选项来显示这个变量吗? - Ôrelgcc
,让它认为该变量已被使用(例如strlen(srcvers);
)? - Drew McGowenvolatile
变量?这样应该可以工作:volatile static const char srcvers[] = "VERSION/foo.c/1.01/09.04.15";
。 - Sam Protsenkoa.out -v
吗?这只能适用于一个源文件,而我们已经这样做了。我想获取所有链接在一起的文件的信息。 - Ingo Leonhardt