我在我的C应用程序中使用了GSL库的一些函数.这个库很大,有很多功能和设施,我只想要它们中的一小部分.我的问题是我想在一个小型嵌入式系统上使用我的应用程序,并使用这个大型库使我的编译应用程序如此之大.
是否有任何设施可以从这些大型库中提取特定的函数和文件子集?
谢谢大家,
是否有任何设施可以从这些大型库中提取特定的函数和文件子集?
是的 - 这就是链接器已经做的事情.
如果是单个目标代码文件,则库是一个集合.链接器将仅链接实际解析代码中引用所需的那些目标文件.只要库设计者使库足够精细(理想情况下每个目标文件一个公共函数),那么链接的应用程序代码将根本不与库的大小相关,只与您明确引用的代码的总和相关.
所以我的建议是首先构建代码,然后看看你是否确实遇到了问题 - 你很可能没有问题.请记住,您的应用程序可能已经链接了标准C库,而这本身并不会使您的应用程序成为整个库的大小!
链接器将能够输出MAP文件,该文件将详细说明链接的对象代码以及其中的函数和数据对象.您将能够确定链接的效率 - 请记住,您调用的函数可能会调用库中您未自己明确引用的其他函数.您的链接器也可以输出详细说明此类依赖关系的交叉引用表.