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 个共享库。当我将共享库与静态链接时,静态将自动成为共享库源代码的一部分。
仅编码 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)
这是正确的我在这里做什么。我不想将可执行文件与静态库链接。只是单个共享库,因为它是我将在其中调用函数的包装器。
如果我在制作可执行文件时链接所有静态库,它确实可以链接,但这不是我想要的结果。
非常感谢您的任何建议,