我有Ubuntu 9.4。我已经构建了程序,一些基本的OpenGL。该程序只是使旋转正方形。然后运行它:
sh: /blabla permission denied.
并且空的main
不起作用:
int main()
{
return 0;
}
我如何使它消失?
我遇到了同样的问题,并且看来我的分区被挂载为noexeccat / etc / mtab
当我在/ etc / fstab中配置选项时,我写了exec,user,但似乎默认情况下,“ user”选项设置为“ noexec”。当我将这两个命令的顺序更改为user时,exec一切恢复正常!
希望有帮助。
您如何编译?你可以发布makefile吗?如果您运行
chmod +x myPorgram
./myProgram
有什么变化吗?
通过运行“ mount”检查安装点以查看是否已将其安装为noexec
我在Ubuntu上使用CodeBlocks,并且多次遇到此确切问题。KermiDT所说的正是解决方案(如果我的代表点足够多,我会投票赞成)默认情况下,“用户”选项设置为“ noexec”。因此,在/ etc / fstab中只需在用户之后添加,exec。即我的看起来像这样:/dev/sda6 /media/DATA vfat uid=kenny,gid=kenny,users,user,exec 0 0
虽然,间距有点小...但是您明白了。
除了上面提到的chmod + x文件,另一个问题可能是缺少库。要检查所需的库,请使用ldd:
$ ldd /bin/sh
linux-vdso.so.1 => (0x00007fffb43fe000)
libc.so.6 => /lib/libc.so.6 (0x00007fc4abe11000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc4ac183000)
如果这些行之一显示缺少的库,您将知道需要安装什么才能运行程序。
另一种可能性是,如果您的程序是脚本(shell,perl,python或其他基于文本的程序)。第一行如下所示:
#!/usr/bin/perl
如果找不到该文件,则会出现权限被拒绝的错误。
问题夫妇:
[尝试在64位系统上执行32位应用程序时也会遇到此问题。执行:
a. file (executable name)
b. uname -a
并检查两者均为“ i386”或“ amd64”。
如果它们不相同,请查看this article:
尝试用strace
执行命令以跟踪成功进行的系统调用及其停止的位置。
这是您可能会启动的方式,
strace
您是否收到“权限被拒绝”错误或类似“ exec格式错误”的信息?在文件上使用strace ./blabla
,您不应单击“权限被拒绝”。
您还应确保您的用户名在视频组中。检查/ etc / group,并确保您的用户名出现在“视频”行中。