Makefile自动链接依赖?

Kua*_*hen 5 dependencies gcc makefile linkage

让程序在编译时找出依赖关系很容易(使用gcc -MM).然而,链接依赖(决定应链接哪些库)似乎很难弄清楚.当需要具有要链接的单个库的多个目标时,此问题变得紧急.

例如,需要构建三个动态库目标t1.so,t2.so和t3.so.t1.so需要数学库(-lm),而t2和t3则不需要.编写单独的规则会很繁琐.需要与数学库链接的三个目标的单个规则可以省去麻烦.但是,由于数学库未用于t2.so和t3.so,因此会导致目标大小膨胀.

有任何想法吗?

Ben*_*ier 1

这并不像找到所需的标头那么容易弄清楚。gcc -MM只是使用预处理器的一些奇特方式,但它对代码的使用或工作方式几乎一无所知:您可以包含一些充满 的标头#define或引入复杂的依赖项库依赖项。

我会坚持为所有目标(在您的情况下为 3 个)编写显式链接依赖项。您可以收集常见的依赖项LDFLAGS