使用一个 makefile 创建可执行文件和共享库

使用一个 makefile 创建可执行文件和共享库

使用 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不能有名为的文件,因为这样会造成混淆。allmake

相关内容