2013-03-14 67 views
1

在一个使用SFML的项目中,我试图通过make编译我的队友部分。所有在他的Ubuntu上都运行良好,但是在我的debian上都出错了。/usr/local/include/SFML premission denied

我把所有的包括通过在libsfml需要在/ usr /本地/包括/文件夹和libsfml对在/ usr/local/lib目录/

ls -l /usr/local/include : drw-rwSrw- 7 root User size date SFML

我所有的.so不知道大写字母S是否是问题的关键,我以前从未见过。 关于sudo使所有工作正常。但我不应该成为编译这样一个项目的根源。

有什么建议吗?

以下是错误输出:

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

资本S确实表明问题。从LS coreutils的信息页面:

如果设置了设置用户ID或设置组ID位,但 对应的可执行位没有设置。

这意味着setgid位设置在目录(强制继承组所有权,这里没有什么有趣),但可执行位不是。对于目录,这是查找目录中的文件的能力。只有root可以看到该目录中的文件,只有root才能忽略该文件。有人将目录的模式设置为只能用于文件的模式。

chmod 2775 /usr/local/include/SFML 

应该解决这个问题。 (或者如果您想使用更传统的纯root权限,则使用755; Debian正在迁移使用staff组。)