在使用SFML的项目中,我试图通过make编译我的队友部分。一切都在他的ubuntu上运行良好,但我的debian都出错了。
我把/ usr / local / include /文件夹中的libsfml所需的所有包含以及/ usr / local / lib /
上的libsfml的所有.so ls -l /usr/local/include : drw-rwSrw- 7 root User size date SFML
我不知道首都S是否是问题的关键,我以前从未见过它。 在sudo上使一切工作正常。但我不需要成为root用户来编译这样一个项目。
有什么建议吗?
以下是错误输出:
LibrarySFML.hpp:14:29: error: /usr/local/include/SFML/Graphics.hpp: Permission denied
LibrarySFML.hpp:15:27: error: /usr/local/include/SFML/System.hpp: Permission denied
LibrarySFML.hpp:16:27: error: /usr/local/include/SFML/Window.hpp: Permission denied
LibrarySFML.hpp第14-15-16行:
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
答案 0 :(得分:0)
首都S
确实表明了问题。来自coreutils ls信息页面:
如果设置了set-user-ID或set-group-ID位,但是 相应的可执行位未设置。
这意味着在目录上设置了setgid位(这会强制继承组所有权,这里不感兴趣),但可执行位不是。对于目录,即能够在目录中查找文件。只有root才能看到该目录中的文件,并且只有那时因为root可以忽略它。有人将目录模式设置为只应用于文件的模式。
chmod 2775 /usr/local/include/SFML
应该解决问题。 (或755
如果您想使用更传统的仅限root权限; Debian正在远离使用staff
组。)