执行存储在 Windows 驱动器上的 C 程序?

执行存储在 Windows 驱动器上的 C 程序?

可能重复:
.exe 文件权限失败

我编写了一个简单的 hello world 程序,但没有将其存储在 Ubuntu 的主目录中,而是将其存储在 Windows 驱动器之一上。(我正在使用 Ubuntu 12.04 和 Windows。)

当我已编译这个程序运行得很好,但是当我尝试执行我收到一条错误消息“权限被拒绝”

当我将程序存储在 Ubuntu 的主目录中时,我可以完美地编译和执行该程序。请告诉我如何克服这个问题?

答案1

当您在 Ubuntu 中安装 Windows 分区时,它会使用 noexec 指令进行安装。如果您经常从 Ubuntu 访问该驱动器,则可以在 fstab 中安装该驱动器。您需要运行 blkid 来确定 Windows 驱动器的 UUID 是什么,然后在 fstab 中为其添加安装语句。确保当您到达行的参数部分时,您没有指定 noexec。

答案2

首先,您应该检查文件和文件系统的权限

 ls -la <filename>

检查您是否具有执行该文件的适当权限

或者检查已安装的 Windows 文件系统的文件系统属性

mount

将输出粘贴到这里。也许我们可以提供帮助

答案3

您需要切换到该目录,然后在更改权限后运行该程序。为此,您将成为超级用户。

我假设您可以导航到 Windows 中保存该文件的目录。

现在,转到该目录并打开另一端的终端并输入

cd

并将 .c 文件所在的目录拖到终端中。如果您的文件位于 Windows 桌面中,则终端将如下所示:

cd '/media/Windows_7/Users/username/Desktop' 

现在,假设您的文件是 test.c,更改该文件的权限并查看它是否可以使用:

sudo chmod 755 test.c

现在编译并查看它是否有效,如果不行,则对 a.out 执行相同操作。

如果这不起作用,我猜这意味着需要更改驱动器权限。

该命令看起来类似于以下内容:

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever

其中“无论什么”都取决于您的系统。

操作说明如下这里这里

如果那不是你要说的,那么你应该按照 mbs 所说的去做。

相关内容