使用 makefile 对我来说是新鲜事。到目前为止,我用最简单的方法进行的第一次测试效果很好。但现在我却无法编写一个可以创建可执行文件和共享库的 makefile。正如我所说,我对 makefile 还很陌生。以下是我的简单方法:
exe.a: main.c func.c
gcc main.c func.c -o exe.a
lib.so: func.c
gcc func.c -o lib.so -fPIC -shared
执行 makefile 时,只会编译可执行文件。是否可以使用一个 makefile 创建两个对象?创建这些文件的最佳方法是什么?
答案1
默认情况下make
仅构建第一的在您的例子中,Makefile 中有一个目标exe.a
。您可以告诉make
它创建另一个目标:
make lib.so
或两个目标:
make lib.so exe.a
或者(首选)引入一种新的第一个目标通常命名为
all
:
all: exe.a lib.so
exe.a: main.c func.c
gcc main.c func.c -o exe.a
lib.so: func.c
gcc func.c -o lib.so -fPIC -shared
现在,一个简单的make
将构建(伪)目标,all
而该目标又依赖于exe.a
和,因此它们首先被构建。请注意,在这种情况下,您的目录中lib.so
不能有名为的文件,因为这样会造成混淆。all
make