biên dịch: http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.7.2/32-bit/threads-posix/sjlj/x32-4.7.2-release-posix-sjlj-rev6.7zTôi đã nhận lỗi 'trùng lặp phần' khi biên dịch boost_regex với tối ưu hóa kích thước (-os)
tăng: http://sourceforge.net/projects/boost/files/boost/1.52.0/boost_1_52_0.7z
(cả trên ổ D:)
boost_regex biên soạn với:
b2 --prefix=D:\boost toolset=gcc --with-regex --layout=tagged release
mã:
#include <boost\regex.hpp>
int main() {
boost::regex reg("[a-z]+");
}
biên soạn với các thông số:
g++ -I "d:\boost" -Os -o test.exe test.cpp -static -L d:\boost\stage\lib -lboost_regex-mt
lỗi:
d:\boost\stage\lib\libboost_regex-mt.a(regex.o): duplicate section `.rdata$_ZTVN5boost16exception_detail19error_info_injectorISt13runtime_errorEE[__ZTVN5boost16exception_detail19error_info_injectorISt13runtime_errorEE]' has different size
d:\boost\stage\lib\libboost_regex-mt.a(regex.o): duplicate section `.rdata$_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorISt13runtime_errorEEEE[__ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorISt13runtime_errorEEEE]' has different size
d:\boost\stage\lib\libboost_regex-mt.a(regex.o): duplicate section `.rdata$_ZTSN5boost16exception_detail10clone_implINS0_19error_info_injectorISt13runtime_errorEEEE[__ZTSN5boost16exception_detail10clone_implINS0_19error_info_injectorISt13runtime_errorEEEE]' has different size
d:\boost\stage\lib\libboost_regex-mt.a(regex.o): duplicate section `.rdata$_ZTSN5boost16exception_detail10clone_baseE[__ZTSN5boost16exception_detail10clone_baseE]' has different size
d:\boost\stage\lib\libboost_regex-mt.a(regex.o): duplicate section `.rdata$_ZTSN5boost16exception_detail19error_info_injectorISt13runtime_errorEE[__ZTSN5boost16exception_detail19error_info_injectorISt13runtime_errorEE]' has different size
Nó biên dịch ok, nhưng tôi chưa thử nghiệm nếu nó sẽ được làm việc trong mã phức tạp hơn. Việc xóa khóa -Os
sẽ xóa lỗi nhưng kích thước ứng dụng lớn gấp 2 lần sau đó.
Có lẽ tôi nên xây dựng Boost với tối ưu hóa kích thước quá cũng nhưng tôi không biết nơi để vượt qua tùy chọn này trong dòng lệnh b2.
[Câu hỏi chưa được trả lời này] (http://stackoverflow.com/questions/11635485/regex-boost-library-linking-in-release-mode-warns-duplicate-section-has-differe) có cùng một vấn đề. Một trong các ý kiến cho thấy rằng vấn đề có thể được tách biệt với mingw-w64. Bản g ++ 4.8.0 của Mingw-build cũng trình bày vấn đề này và gora 4.7.2 của fedora 17 không, vì vậy anh ta/cô ấy có thể đúng. –
Như bạn đã nói, việc sử dụng tối ưu hóa kích thước (thêm 'tối ưu hóa = không gian' vào lệnh xây dựng tăng cường) dường như sẽ xóa bỏ vấn đề. Bạn nên đặt câu trả lời đó nếu bạn có thể xác nhận rằng nó hoạt động. PS: Vâng, vấn đề bây giờ là đảo ngược, trình biên dịch sẽ spews những lỗi/cảnh báo bất cứ khi nào bạn không sử dụng '-Os'. –
@llonesmiz: cảm ơn! những công việc này. Vấn đề là tôi không thể tìm thấy tùy chọn này, nó không được in bởi 'b2 --help' cũng không phải' --help-options'. – rsk82