Ubuntu cmake为root用户而非其他用户工作
我有一个在buildbot从机中运行的虚拟编译。 使用buildbot用户运行时,我得到:Ubuntu cmake为root用户而非其他用户工作,ubuntu,cmake,Ubuntu,Cmake,我有一个在buildbot从机中运行的虚拟编译。 使用buildbot用户运行时,我得到: -- The C compiler identification is unknown -- The CXX compiler identification is unknown -- Check for working C compiler: /usr/bin/gcc -- Check for working C compiler: /usr/bin/gcc -- broken CMake Error
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- broken
CMake Error at /usr/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52 (MESSAGE):
The C compiler "/usr/bin/gcc" is not able to compile a simple test program.
...
cc1: error: /usr/local/include/x86_64-linux-gnu: Permission denied
/usr/local/include/x86_64-linux-gnu不存在,但如果我以su的形式手动运行它,我会得到:
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
以此类推,我可以在以后生成并运行生成的可执行文件
我假设与项目文件权限无关,因为所有文件都属于buildbot用户
命令运行只是一个简单的过程。
操作系统是ubuntu 12.04.1 LTS服务器版
谢谢当CMake检查
gcc
是否工作时,它会创建一个临时文件并尝试编译它。根据我的经验,这总是在本地cmakfiles
files目录中完成的。出于某种原因,它似乎正在尝试在/usr/local/include
中执行此操作(它至少正在尝试在该文件夹中执行某些操作,因此出现cc1:error:/usr/local/include/x86\u 64-linux-gnu:权限被拒绝
)
问题是,正如您所指出的,只有root有权读取或写入该文件夹。这对我来说似乎有点奇怪,因为至少应该允许其他人在那里阅读。无论如何,您的buildbot没有访问权限,因此配置失败
你有三个选择
/usr/local/include
的权限更改为,以便每个人都可以向/usr/local/include
/usr/local/include
的组所有权更改为该组。确保将权限更改为770就个人而言,我会尝试做第一件事,因为我更喜欢在本地做事情,而不是在我的系统内部。
cmakfiles
目录中有一些日志文件,您可以查看。/usr/local/include的权限是什么,谁拥有它?drwx------3 root root 4096 May 9 08:45 includeOk,将读取和执行权限添加到/usr/local/include修复了此问题,谢谢!