cmake 2.8
gcc (GCC) 4.8.1
Sửa ----------liên kết một thư viện chia sẻ với tĩnh học sử dụng CMake
Bao bì các thư viện tĩnh trong whole-archive
tác phẩm cho mỗi thư viện, ngoại trừ pjmedia-videodev
Vấn đề bây giờ là khi tôi cố gắng và xây dựng tôi nhận được lỗi sau.
cbar_factory_init': colorbar_dev.c:(.text+0x2a0): undefined reference to pjmedia_format_init_video'
Xin chào,
tôi đã tạo ra một thư viện chia sẻ và tôi cần phải liên kết thư viện mà có khoảng 10 thư viện tĩnh. Sau đó tôi liên kết tệp thực thi của tôi với thư viện được chia sẻ.
Câu hỏi của tôi là khi tôi chạy làm cho nó không liên kết vì nó cũng muốn các thư viện tĩnh. Mục đích của việc tạo ra một trình bao bọc cho các thư viện tĩnh. Vì vậy, tệp thực thi chỉ phải liên kết với 1 thư viện được chia sẻ duy nhất. Khi tôi liên kết thư viện được chia sẻ với các số liệu thống kê, thì các thống kê sẽ tự động trở thành một phần của mã nguồn của thư viện được chia sẻ.
Chỉ mã sippnets mã ngắn gọn. Trong CMakeLists.txt tôi tạo ra các thư viện chia sẻ và liên kết các thư viện tĩnh:
add_library(app_module_sip SHARED app_module_sip_init.c)
set(PJSIP_LIBRARIES
g7221codec
gsmcodec
ilbccodec
milenage
pj
pjlib-util
pjmedia
pjmedia-codec
pjmedia-audiodev
pjmedia-videodev
pjnath
pjsip
pjsip-simple
pjsip-ua
pjsua
portaudio
resample
speex
srtp
)
target_link_libraries(app_module_sip pthread m uuid nsl rt asound crypto ssl ${PJSIP_LIBRARIES})
Bây giờ CMakeLists.txt của tôi mà làm cho thực thi
add_executable(app sip_test.c)
target_link_libraries(app app_module_sip)
là đúng này những gì tôi đang làm gì ở đây. Tôi không muốn liên kết tệp thực thi với các thư viện tĩnh. Chỉ cần một thư viện được chia sẻ vì đó là trình bao bọc của tôi, tôi sẽ gọi các hàm này.
Nó liên kết ok, nếu tôi liên kết tất cả các thư viện thống kê khi thực thi, nhưng đó không phải là kết quả tôi muốn.
Rất cám ơn cho bất cứ đề nghị,
Khi tôi liên kết app_module_sip với myapp, CMake dường như thêm tất cả các thư viện của cháu như pjsua * ngoài * app_module_sip và các đối tượng trùng lặp làm lộn xộn quá trình khởi tạo tĩnh, chưa kể đến kích thước nhị phân cồng kềnh. – nodakai