如何向这个简单的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,但无法运行,因为它没有权限。我该怎么做呢?
发布于 2016-12-10 15:01:14
举个例子,这条规则:
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.c构建groups。
您还应该使用警告选项进行编译。至少使用-Wall;最好是-Wall -Wextra -Werror (并且我使用的选项比这些更多)。您可能需要优化(-O3);您可能需要调试(-g)。这些通常是通过设置宏,然后在命令中使用来处理的。
https://stackoverflow.com/questions/41072286
复制相似问题