【问题标题】:undefined references in GCC6 to 'rt','pthread','stdc++fs'GCC6 中对 'rt'、'pthread'、'stdc++fs' 的未定义引用
【发布时间】:2016-05-17 14:22:40
【问题描述】:

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

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

目前是:

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

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

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

【问题讨论】:

标签: c++ gcc linker cmake


【解决方案1】:

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

你需要改变:

if(${GCC})

收件人:

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

或者:

if(CMAKE_COMPILER_IS_GNUCXX)

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

【讨论】:

  • 或者使用内置的CMAKE_COMPILER_IS_GNUCXX
  • 谢谢!我不记得我在哪里找到 ${GCC} ,但你在 cmake 手册的某个地方看到了这个......
  • ${UNIX} 在我的情况下更有用,可以在 VC、MINGW 和 GCC (UNIX) 之间拆分逻辑。上面的变量涵盖了应该有不同逻辑的 GCC 和 MINGW
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 2014-10-06
  • 2015-10-26
  • 1970-01-01
  • 2023-01-19
  • 2020-06-28
  • 2014-04-05
相关资源
最近更新 更多