无法从编译静态库C ++(Linux内核)中获取文件。

问题描述 投票:0回答:1

我正在尝试编译各种静态库:

foo.c
foo.h

我的makefile看起来像:

foo.o: foo.c
   cc -c foo.c
libfoo.a: foo.o
   ar -rv libfoo.a foo.o

它编译.c文件并提供.o文件,但是,我没有.a文件。虽然,我可以依次运行确切的命令并获取.a文件。

我确定这很简单,我搞砸了。我已经看了很多遍,但是这些示例并没有真正帮助,因为它们比我的情况复杂得多。

c++ linux makefile static
1个回答
1
投票

仅在没有参数的情况下调用make会默认使用第一个目标,即foo.o。由于这不依赖于libfoo.a(当然也要为什么要依赖它),因此永远不会触发第二个配方。结果是一个.o文件,但没有.a文件。

来自https://www.gnu.org/software/make/manual/html_node/Goals.html

默认情况下,目标是makefile中的first目标

© www.soinside.com 2019 - 2024. All rights reserved.