【发布时间】: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