【问题标题】:CMake (2.8.12.2) compiler check on Ubuntu 14.04 failsUbuntu 14.04 上的 CMake (2.8.12.2) 编译器检查失败
【发布时间】:2015-01-22 20:55:08
【问题描述】:

我正在尝试运行这个简单的 CMake 命令:

$ cmake -D CMAKE_C_COMPILER=/usr/bin/gcc -D CMAKE_CXX_COMPILER=/usr/bin/g++ ./src/

我得到以下输出:

-- C 编译器标识为 GNU 4.8.2

-- CXX 编译器标识为 GNU 4.8.2

-- 检查工作的 C 编译器:/usr/bin/gcc

-- 检查 C 编译器是否正常工作:/usr/bin/gcc -- 损坏

/usr/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:61 处的 CMake 错误(消息): C 编译器“/usr/bin/gcc”无法编译简单的测试程序。

错误原因如下:

gcc:错误:无法识别的命令行选项“-rpath”

因为 CMake 正在尝试与以下命令链接:

/usr/bin/gcc -rpath /usr/local/openblas/lib CMakeFiles/cmTryCompileExec1190183239.dir/testCCompiler.c.o -o cmTryCompileExec1190183239 -rdynamic

据我所知,gcc 没有独立的“-rpath”选项。我不确定 CMake 为什么要这样做。

还有其他人遇到过这个吗?解决方案?

谢谢!

PS:更多可能有用的信息: 我正在尝试学习如何使用 CMake,所以目录结构非常简单:

-cmake_test/
-bin/
-src/
-executable.cpp
-CMakeLists.txt
-CMakeLists.txt

编辑:

完整的输出

    $ cmake ./src/
-- The C compiler identification is GNU 4.8.2
-- The CXX compiler identification is GNU 4.8.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- broken
CMake Error at /usr/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:61 (message):
  The C compiler "/usr/bin/cc" is not able to compile a simple test program.

  It fails with the following output:

   Change Dir: /home/gyorgy/Workspace/CPP_Tests/src/cmake_test/CMakeFiles/CMakeTmp



  Run Build Command:/usr/bin/make "cmTryCompileExec961681416/fast"

  /usr/bin/make -f CMakeFiles/cmTryCompileExec961681416.dir/build.make
  CMakeFiles/cmTryCompileExec961681416.dir/build

  make[1]: Entering directory
  `/home/gyorgy/Workspace/CPP_Tests/src/cmake_test/CMakeFiles/CMakeTmp'

  /usr/bin/cmake -E cmake_progress_report
  /home/gyorgy/Workspace/CPP_Tests/src/cmake_test/CMakeFiles/CMakeTmp/CMakeFiles
  1

  Building C object
  CMakeFiles/cmTryCompileExec961681416.dir/testCCompiler.c.o

  /usr/bin/cc -o CMakeFiles/cmTryCompileExec961681416.dir/testCCompiler.c.o
  -c
  /home/gyorgy/Workspace/CPP_Tests/src/cmake_test/CMakeFiles/CMakeTmp/testCCompiler.c


  Linking C executable cmTryCompileExec961681416

  /usr/bin/cmake -E cmake_link_script
  CMakeFiles/cmTryCompileExec961681416.dir/link.txt --verbose=1

  /usr/bin/cc -rpath /usr/local/openblas/lib
  CMakeFiles/cmTryCompileExec961681416.dir/testCCompiler.c.o -o
  cmTryCompileExec961681416 -rdynamic

  cc: error: unrecognized command line option ‘-rpath’

  make[1]: *** [cmTryCompileExec961681416] Error 1

  make[1]: Leaving directory
  `/home/gyorgy/Workspace/CPP_Tests/src/cmake_test/CMakeFiles/CMakeTmp'

  make: *** [cmTryCompileExec961681416/fast] Error 2





  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):



-- Configuring incomplete, errors occurred!
See also "/home/gyorgy/Workspace/CPP_Tests/src/cmake_test/CMakeFiles/CMakeOutput.log".
See also "/home/gyorgy/Workspace/CPP_Tests/src/cmake_test/CMakeFiles/CMakeError.log".

【问题讨论】:

  • 如果你输入一个简单的命令比如$ cmake ./src/,你会得到错误吗?你能写出完整的输出吗?
  • 感谢您的回复。我犯了同样的错误。我已经用 $ cmake ./src/ 的完整输出更新了我的原始帖子
  • 删除编译器配置后出现同样的错误是正常的。 CMake 使用缓存系统来保存以前配置的信息。请删除 CMakeCache.txt 文件并重新运行cmake ./src
  • 您是否尝试过更新版本的CMake
  • 感谢您的回复。我已经删除了缓存文件和 CMakeFiles 文件夹。我仍然得到同样的错误。我还没有尝试过更新的版本,但是我添加了 Synaptic 的 CMake GUI 并解决了这个问题。使用 GUI 版本:只需按配置,然后按生成按钮即可生成适当的 Makefile。困扰我的是-rpath 命令不正确,应该是-Wl,-rpath。这可能是测试 CMakeLists 文件中的错误,或者?

标签: gcc cmake ubuntu-14.04


【解决方案1】:

我向大家道歉......这个错误是我前一段时间犯的错误造成的。

简而言之,我的 .bashrc 文件中有以下不正确的行:

export LDFLAGS="-rpath /usr/local/openblas/lib "$LDFLAGS

并且 CMake 在 CMakeCommonLanguageInclude.cmake 模块中有以下行:

set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS_INIT} $ENV{LDFLAGS}"

这显然导致将 CMAKE_EXE_LINKER_FLAGS 设置为 -rpath /usr/local/openblas/lib 和 因此错误。将 .bashrc 文件更改为:

export LDFLAGS="-Wl,-rpath=/usr/local/openblas/lib "$LDFLAGS

问题已解决。

我不知道为什么这没有提供 GUI 版本 :-)

我可能通过阅读 OSX 论坛或其他东西弄乱了 .bashrc 文件。

无论如何感谢您的回答!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 2016-02-01
    • 1970-01-01
    • 2016-10-26
    相关资源
    最近更新 更多