Tag: 二元重现性

为什么没有两个只有注释的程序的二进制文件在gcc中完全匹配?

我创build了两个C程序 计划1 int main() { } 计划2 int main() { //Some Harmless comments } AFAIK,编译时,编译器(gcc)应该忽略注释和冗余的空白,因此输出必须相似。 但是,当我检查输出二进制文件的md5sums,他们不匹配。 我也尝试编译优化-O3和-Ofast但他们仍然不匹配。 这里发生了什么? 编辑:确切的命令和那里md5sums是(t1.c是程序1和t2.c是程序2) gcc ./t1.c -o aaa gcc ./t2.c -o bbb 98c1a86e593fd0181383662e68bac22f aaa c10293cbe6031b13dc6244d01b4d2793 bbb gcc ./t2.c -Ofast -o bbb gcc ./t1.c -Ofast -o aaa 2f65a6d5bc9bf1351bdd6919a766fa10 aaa c0bee139c47183ce62e10c3dbc13c614 bbb gcc ./t1.c -O3 -o aaa gcc ./t2.c -O3 -o bbb […]