在GCC中使用Make时,权限被拒绝

时间:2014-02-23 18:03:24

标签: c gcc compilation makefile

我一直在阅读GCC简介 - 对于GNU编译器gcc和g ++

有一些例子,你有hello world程序分为3个不同的文件(main.c,hello_fn.c,hello.h)。在此示例中,它显示了makefile的使用。

CC=gcc 
CFLAGS=-Wall
main: main.o hello_fn.o

clean:
    rm -f main main.o hello_fn.o

他提出的观点是当你只改变一个文件时,例如main.c,使用make你只需要编译你在制作一个新的可执行文件时你已经改变的文件。

我成功创建了一个可执行文件但是当我在main.c中进行一个简单的更改时,它打印出来“Hello everyone!”而是“Hello world!”它会抛出Permission denied错误。此外,您不能再运行该可执行文件,它说“访问被拒绝。”

现在有趣的是它会将错误抛出大约10分钟左右,但是大约10分钟后它会成功编译!你可以在这里看到它:

C:\Users\Neven\Documents\C\GCC knjiga\New Hello>main
Hello, world!

C:\Users\Neven\Documents\C\GCC knjiga\New Hello>make
gcc  -Wall   -c -o main.o main.c
gcc    main.o hello_fn.o   -o main
c:/rtools/gcc-4.6.3/bin/../lib/gcc/i686-w64-mingw32/4.6.3/../../../../i686-w64-m
ingw32/bin/ld.exe: cannot open output file main.exe: Permission denied
collect2: ld returned 1 exit status
make: *** [main] Error 1

C:\Users\Neven\Documents\C\GCC knjiga\New Hello>main
Access is denied.

我的问题是,为什么有一个你不能执行make的时间间隔?

1 个答案:

答案 0 :(得分:3)

申请未结束。这就是您没有权限写入该进程的原因。可能在那10分钟之后,你打破了一些循环或者在输入“Hello World”后让它睡了600秒。