我已经创建了一个简单的静态库,包含在一个.a文件中。我可能会在各种项目中使用它,其中一些项目根本不需要90%的它。例如,如果我想在AVR微机上使用神经网络,这是我的库的一部分,我可能不需要太多的其他东西,但这些东西是否会链接到我的代码中,从而可能生成一个相当大的文件?
我打算编译这样的程序:
g++ myProg.cpp myLib.a -o prog
发布于 2012-09-29 19:45:47
G++将只从您的库中提取所需的目标文件,但这意味着如果使用单个目标文件中的一个符号,则该目标文件中的所有内容都将添加到您的可执行文件中。
一个源文件变成一个目标文件,因此只有在确定需要时才将它们逻辑地分组在一起是有意义的。
这种做法因编译器而异(实际上因链接器而异)。例如,Microsoft链接器将把对象文件拆分开来,只包含那些实际需要的部分。
发布于 2012-09-29 19:49:22
您还可以尝试将库拆分为独立的较小部分,并只链接您真正需要的部分。
发布于 2012-09-29 19:44:16
当您链接到静态库时,链接器会拉入解析代码其他部分中使用的名称的内容。一般而言,如果不使用该名称,则不会链接到该名称。
https://stackoverflow.com/questions/12652393
复制相似问题