c++ - GCC6 中 undefined reference 为 'rt' ,'pthread' ,'stdc++fs'

标签 c++ gcc linker cmake

在尝试构建我的示例项目时,刚刚在 ubuntu 上遇到了 GCC, 找到了链接所需的三个库(来自主题)。 并且还发现“-lxxx”参数的顺序在命令行中很重要

但是我使用 cmake 作为构建系统,并且可以发现这适用于 cmake。

目前这是:

if (${GCC})
     target_link_libraries(${PROJECT_NAME} rt pthread stdc++fs)
endif (${GCC})

它对我不起作用,链接器仍然无法从所有引用的库中找到引用的符号。

有人可以从 cmake 的角度帮助处理这个库链接吗?

最佳答案

就目前情况而言,您的条件始终为假(据我所知,该变量不存在),因此永远不会考虑其中的语句!

您需要更改:

if(${GCC})

致:

if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")

或者:

if(CMAKE_COMPILER_IS_GNUCXX)

现在检查 C++ 编译器是否为 gcc/g++。

关于c++ - GCC6 中 undefined reference 为 'rt' ,'pthread' ,'stdc++fs',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37278853/

相关文章:

c++ - 是否可以将 Boost uint128_t 数据类型存储到原始 int 中?

C++11 - 无法使用 constexpr 函数定义 constexpr 文字?

c - 是否可以使用 GCC 获得经过优化的中间 C 文件?

c++ - 将编译器从 gcc 切换到 msvc 后,Qt 应用程序在退出时崩溃

c++ - 共享库路径作为可执行目录

c++ - 如何定义 double 的隐式转换?

c++ - 为抽象类中的纯虚方法提供实现

c++ - 如何在 OS X 上编译由谷歌的 protobuf 编译器生成的 C++ 文件

python - Qt 和 PyQt 混合应用

c - 使用 C 语言进行数据封装的 OOP 编程