我在VS 2017社区版中有一个Linux项目。该项目包含一个动态.so文件。 这到目前为止工作。我现在想要将此库静态链接为.a文件。如何在项目设置中实现此目的? 我一无所获。对于g ++, -static 或 -Bstatic 应位于命令行的 -llibname 前面。 在 Linker->下的项目设置中所有选项 - >其他选项我有“ - (B)static -llibname ”。 但它不起作用, - (B)静态不在生成的命令行中。有谁知道它是如何工作的?
答案 0 :(得分:3)
您需要将库构建为静态库然后只需像动态库那样指定库名称(不带lib
前缀或.a
扩展名)。
静态库只是所有目标文件(ar
命令)的归档。如果您正在使用MSBuild项目,请在项目属性/常规/项目默认值中将静态库指定为配置类型。
GCC将首先在lib路径上搜索动态库(.so
),然后在静态库(.a
)中搜索。如果您同时拥有并希望强制进行静态链接,则会提供一些非常有用的信息here。