Tôi đang đọc: http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.htmlg ++ Flags Tối ưu hóa: -fuse-linker-plugin vs -fwhole chương trình
Nó đầu tiên gợi ý: Kết hợp với -flto sử dụng tùy chọn này (-fwhole chương trình) không nên được sử dụng. Thay vào đó, việc dựa vào plugin trình liên kết sẽ cung cấp thông tin chính xác hơn và an toàn hơn cho thông tin .
Và sau đó, nó cho thấy: Nếu chương trình không đòi hỏi bất kỳ biểu tượng để được xuất khẩu, chúng ta có thể kết hợp -flto và -fwhole chương trình cho phép tối ưu interprocedural sử dụng các giả định tích cực hơn điều này có thể dẫn đến các cơ hội tối ưu hóa được cải thiện. Sử dụng -fwhole-program là không cần thiết khi plugin trình liên kết đang hoạt động (xem -fuse-linker-plugin).
Liệu nó có nghĩa rằng về mặt lý thuyết, sử dụng -fuse-linker-plugin với -flto luôn được một được tối ưu hóa tốt hơn so với sử dụng thực thi -fwhole chương trình với -flto?
Tôi cố gắng để sử dụng ld để liên kết với -fuse-linker-plugin và -fwhole chương trình riêng biệt, và kích thước của các tập tin thực thi ít nhất là khác nhau.
Xin cảm ơn trước.
P.S. Tôi đang sử dụng gcc 4.6.2 và ld 2.21.53.0.1 trên CentOS 6.
fwiw, theo báo giá của bạn - "Sử dụng chương trình -fwhole là không cần thiết khi plugin trình liên kết đang hoạt động (xem -fuse-linker-plugin)." - sau này chúng tôi thấy trong tài liệu - ** "Tùy chọn này [' -fuse-linker-plugin'] được bật theo mặc định khi hỗ trợ LTO trong GCC được bật và GCC được định cấu hình để sử dụng với trình hỗ trợ trình liên kết (GNU ld 2.21 hoặc mới hơn hoặc vàng). "** - vì vậy tôi sẽ đoán rằng bao gồm hầu hết các cài đặt hiện đại hợp lý của gcc. có nghĩa là chúng có một tùy chọn mặc định làm cho '-fwhole-program' không cần thiết. nhưng đây chỉ là cách giải thích của tôi về tất cả! –