psu*_*lue 16 linux linker static-libraries
我正在尝试创建一个包含目标文件和现有静态库的静态库,这些库都是在构建过程中先前编译的.有没有一种简单的方法可以使用"ar"来执行此操作,还是需要解压缩(ar x library_name)每个库并将其目标文件添加到统一库中?
如果要创建共享库,可以使用以下命令:
您可以使用ld中的--whole-archive标志:
--whole-archive
对于--whole-archive选项后命令行中提到的每个归档,请在链接中包含归档中的每个目标文件,而不是在归档中搜索所需的目标文件.这通常用于将存档文件转换为共享库,从而强制将每个对象包含在生成的共享库中.此选项可能不止一次使用.从gcc使用此选项时的两个注意事项:首先,gcc不知道此选项,因此您必须使用-Wl,-whole-archive.其次,不要忘记在归档列表之后使用-Wl,-no-whole-archive,因为gcc会将自己的归档列表添加到您的链接中,您可能也不希望此标记也影响这些归档.
对于静态库,您可能必须首先提取对象.
ar为我找到了以下内容
gnu ar可以选择创建一个瘦存档,其中包含一个符号索引和对存档成员文件的原始副本的引用.这样的存档对于构建在本地构建中使用的库是有用的,其中可重定位对象应该保持可用,并且复制每个对象的内容只会浪费时间和空间.精简归档也是扁平化的,因此将一个或多个归档添加到精简归档将单独添加嵌套归档的元素.存档元素的路径相对于存档本身存储.
也许你可以使用这么薄的档案.