#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char* argv[]){
char* path = argv[1];
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH;
int fd = open(path, O_WRONLY | O_EXCL | O_CREAT, mode);
if(fd == -1){
perror("open");
return 1;
}
return 0;
}
我想为它写一个Makefile。所以它不应该很难。 Makefile看起来像这样:
openfile: openfile.c
gcc -c -o openfile openfile.c
因为我没有/需要一个openfile.h所以我只需要一个openfile.c。编译时,当我运行./open文件时,它会说:bash:./ openfile:Permission denied
那么问题呢?我必须写一个.h文件吗?
答案 0 :(得分:4)
问题在于您不需要-c
。当您将-c
传递给gcc
时,它不会执行链接步骤,因此您实际上会获得o文件。