cmake 2.8
gcc (GCC) 4.8.1
編集 - - - - -
静的ライブラリをラップすることは、whole-archive
を除くすべてのライブラリで機能しますpjmedia-videodev
。問題は、ビルドしようとすると次のエラーが発生することです。
cbar_factory_init': colorbar_dev.c:(.text+0x2a0): undefined reference to pjmedia_format_init_video'
こんにちは、
共有ライブラリを作成しましたが、そのライブラリを約 10 個の静的ライブラリにリンクする必要があります。次に、実行可能ファイルを共有ライブラリにリンクします。
私の質問は、静的ライブラリも必要とするため、make を実行するとリンクに失敗するということです。の目的は、静的ライブラリのラッパーを作成することです。したがって、実行可能ファイルは 1 つの共有ライブラリとリンクするだけで済みます。共有ライブラリをスタティックにリンクすると、スタティックは自動的に共有ライブラリのソース コードの一部になります。
sippnets のみをコーディングして短くします。共有ライブラリを作成し、静的ライブラリをリンクする私の 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)
これは私がここでやっていることは正しいですか。実行可能ファイルを静的ライブラリにリンクしたくありません。単一の共有ライブラリは、関数を呼び出すラッパーであるためです。
実行可能ファイルを作成するときにすべての静的ライブラリをリンクすると、リンクは問題ありませんが、それは私が望む結果ではありません。
ご提案いただきありがとうございます。