gpt4 book ai didi

CMake 中的 C++ 链接器标志

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:34:24 25 4
gpt4 key购买 nike

我正在编译 C++ 程序并收到以下错误消息:

undefined reference to 'pthread_mutexattr_init'
undefined reference to 'dlopen'
undefined reference to 'dlerror'
undefined reference to 'dlsym'
undefined reference to 'dlclose'

为了解决 pthread 的错误,我将以下链接器标志添加到我的 CMakeLists.txt

if (UNIX)
set(CMAKE_CXX_FLAGS "-pthread")
endif (UNIX)

这解决了 pthread 错误。为了解决 libdl 错误,我继续将其修改为以下内容。

if (UNIX)
set(CMAKE_CXX_FLAGS "-pthread -dl")
endif (UNIX)

这给了我一个警告

unrecognized gcc debugging option: l

我修改成如下

if (UNIX) 
set(CMAKE_CXX_FLAGS "-pthread")
set(CMAKE_CXX_FLAGS "-dl")
endif (UNIX)

并返回所有的错误信息和

unrecognized gcc debugging option: l.

我是否想念如何在 CMake 中设置链接器标志?我到底做错了什么?我在 Ubuntu 17.04 x64 上。

最佳答案

这是 pthreaddl 的现代规范 CMake 方法:

cmake_minimum_required(VERSION 3.9)
project(my_pthread_dl_project)

set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads)
add_executable(myexe source.c)
target_link_libraries(myexe
Threads::Threads
${CMAKE_DL_LIBS})

关于CMake 中的 C++ 链接器标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45240910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com