Tôi đã tạo hai chương trình C
Chương trình 1
int main() { }
Chương trình 2
int main() { //Some Harmless comments }
AFAIK, khi biên dịch, trình biên dịch (gcc) nên bỏ qua các chú thích và khoảng trắng thừa, và do đó đầu ra phải tương tự.
Nhưng khi tôi kiểm tra md5sums của các tệp nhị phân đầu ra, chúng không khớp. Tôi cũng đã cố gắng biên soạn với tối ưu hóa -O3
và -Ofast
nhưng họ vẫn không tìm thấy.
Chuyện gì đang xảy ra ở đây?
CHỈNH SỬA: các lệnh chính xác và có md5sums (t1.c là chương trình 1 và t2.c là chương trình 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
564a39d982710b0070bb9349bfc0e2cd aaa
ad89b15e73b26e32026fd0f1dc152cd2 bbb
Và có, md5sums khớp với nhiều bộ sưu tập có cùng cờ.
BTW hệ thống của tôi là gcc (GCC) 5.2.0
vàLinux 4.2.0-1-MANJARO #1 SMP PREEMPT x86_64 GNU/Linux