8

我有 Ubuntu 9.4。我已经构建了程序,一些基本的 OpenGL。该程序只是制作一个旋转正方形。然后运行它并:

sh: /blabla permission denied.

一个空的main不起作用:

int main()
{
    return 0;
}

我怎样才能让它消失?

4

9 回答 9

14

我有同样的问题,似乎我的分区被挂载为 noexec cat /etc/mtab

当我在 /etc/fstab 中配置选项时,我写了 exec,user 但似乎“user”选项默认设置为“noexec”。当我将这两个的顺序更改为 user,exec 时,一切恢复正常!

希望能帮助到你。

于 2010-02-17T10:42:09.987 回答
7

你是怎么编译的?你可以发布makefile吗?如果你跑

chmod +x myPorgram
./myProgram

有什么变化?

于 2009-06-17T11:16:20.380 回答
5

通过运行“mount”检查挂载点是否挂载为 noexec

于 2009-06-17T16:49:38.443 回答
2

我在 Ubuntu 上使用 CodeBlocks 并且多次遇到这个问题。KermiDT 所说的正是解决方案(如果我有足够的代表点,我会投票赞成)
“用户”选项默认设置为“noexec”。
所以在 /etc/fstab 中只需在用户之后添加 ,exec 。即我的看起来像这样:
/dev/sda6 /media/DATA vfat uid=kenny,gid=kenny,users,user,exec 0 0
虽然,间距有点偏离......但你明白了。

于 2010-07-31T17:42:30.357 回答
1

几个问题:

  1. 文件的权限设置是否正确?
  2. 任何解释器的路径是否设置正确?
于 2009-06-17T11:10:12.437 回答
1

除了上面提到的 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

如果找不到该文件,您将收到权限被拒绝错误。

于 2009-06-17T11:20:08.127 回答
1

尝试在 64 位系统上执行 32 位应用程序时也会遇到此问题。执行:

a. file (executable name)
b. uname -a

并检查两者是“i386”还是“amd64”。

如果它们不一样,请查看这篇文章

于 2010-02-10T21:51:42.673 回答
0

尝试执行该命令strace以跟踪它进行的成功系统调用以及它停止的位置。

这就是你可以启动它的方式,

strace ./blabla

您是否收到“权限被拒绝”错误或“执行格式错误”之类的错误?在chmod +rx文件上,您不应该点击“权限被拒绝”。

于 2009-06-17T11:49:31.670 回答
0

您还应该确保您的用户名在视频组中。检查 /etc/group 并确保您的用户名出现在“视频”行。

于 2009-06-17T16:47:57.197 回答