如何根据共享库与 CMake 链接静态库

问题描述

我想使用未与我的 libglog.a 应用共享的静态库 (heartbeat)。

我使用的 glog lib(https://github.com/google/glog) 依赖于 unwind lib 通过这个链接引用 Why a static library can depend on a shared a library?

我也遇到了这个问题! @杨可

但我是 CMake 的新手,我不知道如何链接 unwind.so

这是我的 CMakeLists.txt

include_directories(
    ${CMAKE_CURRENT_LIST_DIR}
)

link_directories(

)

add_executable( heartbeat
    main.cpp
    heartbeat.cpp
    ${COMPONENTS_SRC}
    ${MODULES_SRC}
)
    
target_link_libraries( heartbeat 
    libpthread.a
    libcrypt.a
    libm.a

    libgflags.a
    libglog.a
    libhiredis.a
    libredis++.a
)

# 输出到build文件夹上层目录
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/..)

然后我得到这个错误

/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libglog.a(libglog_la-utilities.o):在函数‘google::GetStackTrace(void**,int,int) [clone .part.7]’中:
(.text+0xad):对‘_Ux86_64_getcontext’未定义的引用
(.text+0xb8):对‘_ULx86_64_init_local’未定义的引用
(.text+0xe7):对‘_ULx86_64_step’未定义的引用
(.text+0x100):对‘_ULx86_64_get_reg’未定义的引用
(.text+0x120):对‘_ULx86_64_step’未定义的引用
collect2: error: ld returned 1 exit status

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)