Tôi chỉ mới bắt đầu với trình biên dịch g ++ trên Linux và có một số câu hỏi về cờ biên dịch. Dưới đây là họTối ưu hóa và cờ để tạo một thư viện tĩnh với g ++
tối ưu hóa
Tôi đọc về cờ tối ưu -O1
, -O2
và -O3
trong g ++ trang hướng dẫn. Tôi không hiểu khi nào sử dụng những lá cờ này. Thường thì bạn sử dụng mức tối ưu hóa nào? Hướng dẫn sử dụng g ++ cho biết những điều sau đây cho -O2
.
Tối ưu hóa nhiều hơn. GCC thực hiện gần như tất cả các tối ưu hóa được hỗ trợ mà không liên quan đến một sự cân bằng tốc độ không gian. Trình biên dịch không thực hiện việc bỏ vòng lặp hoặc hàm nội tuyến khi bạn chỉ định -O2. So với -O, tùy chọn này tăng cả thời gian biên dịch và hiệu suất của mã được tạo ra.
Nếu nó không thực hiện nội tuyến và bỏ vòng lặp, cách trang phục hiệu suất được thực hiện và tùy chọn này được khuyến nghị như thế nào?
Thư viện tĩnh
Làm thế nào để tạo ra một thư viện tĩnh nhờ sủ dụng g ++? Trong Visual Studio, tôi có thể chọn một dự án thư viện lớp và nó sẽ được biên dịch thành tệp "lib". Tương đương trong g ++ là gì?
[Năm 2003, GCC's -O3 bị lỗi và có một đoạn rap xấu.] (Http://stackoverflow.com/a/11546263/845092) Ngày nay nó chỉ tạo ra mã xấu khi bạn phá vỡ các quy tắc, nhưng những người như phá vỡ quy tắc và phát điên khi hậu quả xảy ra, vì vậy họ dính vào -O2 để tránh hậu quả của việc viết mã bất hợp pháp. –