Làm cách nào để biên dịch chương trình C mà không trải qua bất kỳ tối ưu hóa nào bằng gcc/g ++?Cách biên dịch chương trình C mà không cần bất kỳ tối ưu hóa nào
Trả lời
gcc main.c
hoặc
g++ main.cpp
theo mặc định nó không làm bất cứ việc tối ưu. Chỉ khi bạn chỉ định -O1, -O2, -O3, etc...
, nó có tối ưu hóa không.
Hoặc bạn có thể sử dụng công tắc -O0
để làm cho nó rõ ràng.
Bạn không nên nhận bất kỳ tối ưu hóa nào trừ khi bạn yêu cầu chúng qua cờ -O
. Nếu bạn cần hoàn tác một số giá trị mặc định do hệ thống xây dựng của bạn cung cấp, -O0
sẽ làm điều đó cho bạn, miễn là đó là cờ -O
cuối cùng trong dòng lệnh.
Sử dụng gcc, vượt qua trong cờ: -O 0.
Sử dụng trình biên dịch chuyển -O0.
Sử dụng -O0 là gần nhất tôi biết, tuy nhiên, không giống như các thư trả lời khác, điều này không có nghĩa là tối ưu hóa bằng 0. Bạn có thể đếm số lượng tối ưu hóa kích hoạt cho các cấp độ tối ưu hóa gcc khác nhau như thế này (đây là 4.8.2 gcc):
$ gcc -Q -O0 --help=optimizers | grep enabled | wc -l
52
$ gcc -Q -O1 --help=optimizers | grep enabled | wc -l
80
$ gcc -Q -O2 --help=optimizers | grep enabled | wc -l
110
$ gcc -Q -O3 --help=optimizers | grep enabled | wc -l
119
Vì vậy, tại -O0, có 52 tối ưu hóa kích hoạt. Tôi cho rằng người ta có thể vô hiệu hóa từng người một, nhưng tôi chưa từng thấy điều đó.
Lưu ý rằng các trang man gcc nói:
-O0 Reduce compilation time and make debugging produce the expected results. This is the default.
Nó không hứa hẹn không tối ưu.
Tôi không phải là nhà phát triển gcc, nhưng tôi đoán họ sẽ nói rằng các tối ưu hóa -O0 đã trở thành tiêu chuẩn đến mức chúng hầu như không thể được gọi là tối ưu hóa nữa, thay vào đó là "tiêu chuẩn". Nếu đó là sự thật, có một chút khó hiểu, vì gcc vẫn có chúng trong danh sách trình tối ưu hóa. Tôi cũng không biết lịch sử đủ tốt: có lẽ cho một phiên bản trước -O0 thực sự có nghĩa là không tối ưu hóa ...
- 1. C tối ưu hóa cấu trúc trình biên dịch
- 2. Tối ưu hóa trình biên dịch Erlang
- 3. Trình biên dịch C/C++ có tối ưu hóa trên các đơn vị biên dịch không?
- 4. C++ 0x tối ưu hóa chất lượng trình biên dịch
- 5. boost :: bất kỳ tối ưu hóa typeid cho C++ 11
- 6. Trình biên dịch có tối ưu hóa điều này không
- 7. Cách tắt trình biên dịch tối ưu hóa của V8
- 8. tối ưu hóa bởi trình biên dịch trong một chương trình đệ quy
- 9. Làm cách nào để vô hiệu hoá tối ưu hóa trình biên dịch trong C#?
- 10. Có các trình biên dịch C++ được tối ưu hóa để sử dụng mẫu không?
- 11. Biên dịch bất kỳ Chương trình C nào bằng cách sử dụng "make" (01 makefile)
- 12. C# làm chuỗi chữ được tối ưu hóa bởi trình biên dịch?
- 13. Trình biên dịch C# có đủ thông minh để tối ưu hóa mã này không?
- 14. Các chương trình con thuần túy ở Fortran - Tối ưu hóa biên dịch
- 15. Cách tốt nhất để mở rộng API chrome mở rộng, để làm việc với Trình biên dịch Tối ưu hóa Trình biên dịch Tối ưu hóa?
- 16. Bất kỳ ý tưởng nào về cách sử dụng Trình biên dịch Google Closure để kết hợp nhiều tệp javascript với bất kỳ tối ưu nào?
- 17. Trình tối ưu hóa C# và JIT làm những loại tối ưu nào?
- 18. Ở mức độ nào trình biên dịch C# hoặc JIT tối ưu hóa mã ứng dụng?
- 19. Làm thế nào tôi có thể xem mã lắp ráp được tạo bởi trình biên dịch gcc (bất kỳ hương vị) nào cho chương trình C/C++?
- 20. Làm thế nào tối ưu hóa trình biên dịch có thể ảnh hưởng đến logic mã?
- 21. Tùy chọn dòng lệnh C# biên dịch/tối ưu hóa có ảnh hưởng đến JITter không?
- 22. Trình biên dịch tối ưu hóa chức năng giai thừa này như thế nào?
- 23. Bạn đã sử dụng bất kỳ trình thông dịch C++ nào (không phải trình biên dịch)?
- 24. Có bất kỳ triển khai Ma trận Sparse nào được tối ưu hóa trong C# không?
- 25. Tối ưu hóa trình biên dịch C++ của các đối số đã qua
- 26. Trình biên dịch JIT có tối ưu hóa các biến khai báo không cần thiết (nội tuyến) không?
- 27. Hiệu suất C++, tối ưu hóa trình biên dịch, chức năng trống trong .cpp
- 28. biên dịch C++ thành chương trình "thực"
- 29. Làm cách nào để viết mã (kiểm tra) sẽ không được tối ưu hóa bởi trình biên dịch/JIT?
- 30. Làm cách nào để tối ưu hóa chu kỳ?
Nếu bạn không tìm kiếm trình biên dịch, bạn có thể đang tìm cách khai báo biến (s) 'bay hơi'. – user786653
Tại sao bạn muốn chúng bị tắt? Bạn có một số lý do để tin rằng tối ưu hóa là 1) được kích hoạt, và 2) gây ra vấn đề cho bạn? Rất hiếm khi tối ưu hóa để gây ra sự cố với mã được viết chính xác. Tuy nhiên, thường hữu ích khi sử dụng -O0 kết hợp với -ggdb để gỡ lỗi. –