1
命令gcc -c a.c b.c c.c
产生与源文件在命令行中排序不同的二进制文件。为了安全起见,我希望每次构建文件时都要更改二进制顺序。 gcc是否有内置选项可以执行此操作?或者比手动重新排序源文件更好的方法?gcc是否有可能对生成的二进制进行不同的排序?
命令gcc -c a.c b.c c.c
产生与源文件在命令行中排序不同的二进制文件。为了安全起见,我希望每次构建文件时都要更改二进制顺序。 gcc是否有内置选项可以执行此操作?或者比手动重新排序源文件更好的方法?gcc是否有可能对生成的二进制进行不同的排序?
如果你不介意它是概率不同那么你可以写一个小的shell脚本,随机输入:
gcc -c $(ls *.c | sort --random-sort) -lwhatever
当然,在一般的解析ls(1)
输出是危险的,但由于这些是你的源文件,在你的名字中显示一点自由裁量权,并避免换行符。
当然,不利的一面是,多次运行可能会导致相同的随机顺序。这就是人生。
如果订单是一样的,那么它们不会比现在更糟糕。 “sort”的'--random-sort'选项并不一定适用于任何地方(例如Mac OS X)。另外,'make'不理解文件名中的空格或制表符;如果你使用'make',你将不会有导致'ls'问题的文件名。 –
@Jonathan:谢谢,我没有意识到'--random-sort'是一个GNUism。 – sarnold