如何在基本makefile中授予权限

时间:2016-12-10 04:50:21

标签: linux makefile

如何为此简单的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,但不能,因为它没有权限。我怎么能这样做?

1 个答案:

答案 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)。这些通常通过设置宏来处理,然后在命令中使用它们。