链接静态库时有没有办法进行预处理?

时间:2015-09-14 00:54:04

标签: c static-libraries

我有一些源文件.c;它们实际上是其他人提供的图书馆。当我构建我的程序来使用这个库时,我必须再次编译这些文件。我无法将文件编译到静态库中,因为源包含一些预处理器标志。我必须使用不同的预处理程序标志组合生成许多静态库。

那么,是否有任何技术可以构建静态库,并选择在与此库链接时应使用哪些预处理器标志?

2 个答案:

答案 0 :(得分:1)

都能跟得上;静态库是一个对象模块的集合,是一个编译阶段,除了链接选项之外,它还要迟到。

如果您需要为每个项目提供不同的构建选项,只需将库与需要它的项目一起构建;无论如何,静态库很少值得付出努力。

答案 1 :(得分:0)

不,你不能。您需要源代码。 c编译从源到可执行文件有三个基本步骤。

来源 - >预处理器 - >编译到对象文件 - >链接 - >可执行文件

静态库有点像目标文件。在此之前,它们已经被编译和预处理。链接器使用静态库来生成最终的可执行文件。