如何为此简单的make文件添加权限?
all: shell ls cat groups
shell: shell.o cd.o
gcc shell.o cd.o -o shell
cat: cat.o
gcc -c cat.c -o cat
ls: ls.o header.h
gcc -c ls.c -o ls
groups: groups.o groups.h
gcc -c groups.c -o groups
shell.o: shell.c tlpi_hdr.h
gcc -c shell.c
cd.o: cd.c tlpi_hdr.h
gcc -c cd.c
cat.o: cat.c tlpi_hdr.h
gcc -c cat.c
ls.o: ls.c header.h
gcc -c ls.c
groups.o: groups.c groups.h
gcc -c groups.c
clean:
rm *.o shell cat ls groups
我需要在我创建的shell中运行cat / ls / groups / cd,但不能,因为它没有权限。我怎么能这样做?
答案 0 :(得分:1)
例如,这条规则:
groups: groups.o groups.h
gcc -c groups.c -o groups
告诉GCC生成一个名为groups
的对象文件(而不是正常的groups.o
),因为您包含了-c
选项。对象文件不是可执行文件,因此编译器不会使它们可执行,因此您的权限问题。请注意,该规则需要make
来构建groups.o
,然后继续忽略目标文件,因为它会重新编译源代码。
你想写一些更像是:
groups: groups.o
gcc groups.o -o groups
groups.o: groups.h
您需要使用更多宏 - 或者您可以将规则排除在makefile之外,因为make
知道如何从groups
构建groups.c
。
您还应该使用警告选项进行编译。至少-Wall
;最好是-Wall -Wextra -Werror
(我还使用比这些更多的选项)。您可能需要优化(-O3
);您可能需要调试(-g
)。这些通常通过设置宏来处理,然后在命令中使用它们。