cmake 2.8
gcc (GCC) 4.8.1
編輯----------連接使用CMake的
結束語在whole-archive
作品爲每個庫的靜態庫除了pjmedia-videodev
現在的問題靜態共享庫,當我嘗試並建立我得到以下錯誤。
cbar_factory_init': colorbar_dev.c:(.text+0x2a0): undefined reference to pjmedia_format_init_video'
你好,
我創建了一個共享庫,我需要的是庫約10靜態庫鏈接。然後我將我的可執行文件與共享庫鏈接起來。
我的問題是,當我運行使它無法鏈接,因爲它也想要靜態庫。目的是爲靜態庫創建一個包裝器。所以可執行文件只需要鏈接一個單獨的共享庫。當我將共享庫鏈接到靜態庫時,靜態庫會自動成爲共享庫源代碼的一部分。
只有代碼sippnet使其短。 在我的CMakeLists.txt創建共享庫和鏈接的靜態庫:
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})
現在我的CMakeLists.txt,使可執行
add_executable(app sip_test.c)
target_link_libraries(app app_module_sip)
這是正確的我在做什麼在這裏。我不想將可執行文件與靜態庫鏈接起來。只是單一的共享庫,因爲這是我的封裝,我將調用函數。
它確實鏈接好,如果我連接所有的靜態庫時做可執行文件,但這不是我想要的結果。
非常感謝您的任何建議,
當我將app_module_sip鏈接到myapp時,除了* app_module_sip之外,CMake似乎還添加了所有的孫子庫,比如pjsua *,重複的對象會擾亂靜態初始化,更不用說膨脹的二進制大小了。 – nodakai