Tôi có một thư viện dùng chung chỉ được xuất khẩu một chức năng được đánh dấu bằng __attribute__ ((visibility ("default")))
. Nó cũng liên kết với một thư viện tĩnh (fftw), vàmingw -fvisibility = hidden dường như không hoạt động
#include<fftw3.h>
được bắt đầu bằng:
#pragma GCC visibility push(hidden)
Lệnh mối liên kết sử dụng:
g++.exe -fvisibility=hidden -shared -o mylib.dll -Wl,--out-implib,mylib.dll.a -Wl,--no-whole-archive libfftw3.a libfftw3_omp.a -lgomp
Bây giờ thư viện kết quả là rất lớn và nếu Tôi kiểm tra các chức năng xuất khẩu nó bao gồm tất cả chức năng fftw, và tất cả các chức năng từ các tập tin của tôi. Dường như mingw bỏ qua các tùy chọn hiển thị. Tôi đọc rằng trước đây nó đã cảnh báo về -fvisibility
, nhưng bây giờ nó biên dịch không có cảnh báo nào.
Hiện mingw và gcc 4.6.1 có hỗ trợ cờ hiển thị không? Nếu có, làm cách nào để loại bỏ tất cả nội dung không cần thiết trong thư viện được chia sẻ của tôi?