链接器在将已构建的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
我的程序编译得还可以。为什么静态库没有链接?我做错了什么
提前感谢!

已解决。我使用target_link_libraries作为可执行文件,但在链接到可执行文件的静态库中使用了libevent。现在,我将libevent直接链接到使用它的静态库。

相关内容

  • 没有找到相关文章

最新更新