我正在尝试了解OpenSSL(1.1.1
(的构建过程。似乎./Configure
将生成一个名为configdata.pm
的文件,其中包含编译器标志等。还有一个Makefile
可能包含一些有用的信息。为了简单起见,我启用了NO_ASM
。
但是,我如何知道libcrypto
和libssl
的构建中包含哪些翻译单元?似乎抓取crypto
和ssl
目录中的每个.c
文件都会导致构建错误。
如何从构建过程中提取这些信息?
要知道构建libcrypto
和libssl
需要哪些依赖项,生成的Makefile
包含您需要的所有信息。
目标有一个名为libcrypto$(SHLIB_EXT_SIMPLE)
的规则,它详细说明了它的依赖关系,并有一个将所有对象文件链接到crypto
库的配方。在我当前的构建中,该配方包含一行大约14000个字符长的代码。在Makefile
中找到它的最简单方法是搜索表达式-o libcrypto
。
类似地,对于ssl
库,目标被称为libssl$(SHLIB_EXT_SIMPLE)
,您可以通过搜索-o libssl
来找到配方
现在弄清楚Makefile
本身是如何生成的就另当别论了。。。据我所知,这方面的信息分散在不同子目录中的许多build.info
文件中,例如crypto
目录下的文件,以及Configuration
目录中的一些模板。这些信息通过几个perl脚本连接在一起。