将已构建的libevent链接为静态库时,链接器错误,但作为共享库链接时,链接器错误

时间:2020-10-26 14:07:50

标签: c++ cmake linker static-libraries libevent

我已经使用GCC编译器(在Linux上)从源代码将libevent库构建为静态库。 Cmake选项:

cmake -B build -S . -DEVENT__DISABLE_OPENSSL=ON -DEVENT__LIBRARY_TYPE=STATIC -DEVENT__DISABLE_DEBUG_MODE=ON  
cmake --build build --config Release

CMakeLists.txt中的链接库:

target_link_libraries(${PROJECT_NAME}

        ${CMAKE_SOURCE_DIR}/libevent_core.a

        )

但是我仍然收到这样的错误:

/usr/bin/ld: /home/user/libevent_test/main.cpp:65: undefined reference to `event_base_new'
/usr/bin/ld: /home/user/libevent_test/main.cpp:85: undefined reference to `event_new'
/usr/bin/ld: /home/user/libevent_test/main.cpp:89: undefined reference to `event_add'

我还尝试将libevent构建为共享库(.so输出文件),并且链接良好。 在CMakeLists.txt中,我刚刚将${CMAKE_SOURCE_DIR}/libevent_core.a更改为${CMAKE_SOURCE_DIR}/libevent_core.so
而且我的程序编译好了。为什么静态库不链接? 我做错了什么?
预先感谢!

1 个答案:

答案 0 :(得分:0)

已解决。我将target_link_libraries用于可执行文件,但libevent用于链接到可执行文件的静态库。 现在,我将libevent直接链接到正在使用它的静态库。而且有效。

相关问题