无法编译ntfs格式分区上的.c文件的可执行文件

我一直在尝试很长时间来解决编译简单的C代码到一个可执行文件的明显问题。 我已经做了一个简单的C代码,应该通过生成文件打印到一个.txt文件的大小以字节为单位。 它不能在我的系统上编译一个可执行文件,但是在我的大学的Linux服务器上完美地工作。 我正在运行Linux版本Mint 17.1 64bit与cc版本“ cc(Ubuntu 4.8.2-19ubuntu1)4.8.2 ”。 我的testingC代码在文件temp.c

 #include <stdlib.h> #include <stdio.h> int main( void ) { printf("sizeof(double) returns %lu\n", sizeof(double)); return 0; } 

我的makefile如下所示:

 CFLAGS = -Wall -m64 -std=c99 all: A; A:out.txt out.txt: temp; ./temp > out.txt chmod go+r temp: temp.o clean: rm temp.o rm temp out.txt 

在我的大学linux服务器上login时inputcc -dumpversion返回“ cc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-50) ”,input“ cc-dumpmachine ”返回“ x86_64-redhat-linux

我不明白为什么make all我的机器上的make all返回

 cc -Wall -m64 -std=c99 -c -o temp.o temp.c cc temp.o -o temp ./temp > out.txt /bin/sh: 1: ./temp: Permission denied make: *** [out.txt] Error 126 

其他信息: temp.c位于NTFS分区的文件夹中,该分区在使用选项exec进行引导时自动挂载。 从shell而不是makefile中编译不带-c temp.c不能完成这个工作。 任何时候我尝试运行./temp或编译的结果返回“ Permission denied ”语句。

如注释中的OP所述,可执行文件位于NTFS格式的分区中。 默认情况下,Ubuntu(因此我会假设Mint)没有以可以执行文件的方式安装NTFS。

引用@Sebastian在AskUbuntu上的一个答案 (有修改),将在/etc/fstab上进行以下更改:

解决方法是在users选项后面写入exec mount选项。 这是因为users选项隐含地激活了noexec选项,所以你必须明确指定exec