static-linking - 如何使用pkg-config静态链接库

标签 static-linking pkg-config

我想静态链接pkg-config找到的libpng。

pkg-config --libs --static libpng


输出


-L / usr / local / Cellar / libpng / 1.6.15 / lib -lpng16 -lz


我在该目录中都有libpng16.a libpng16.dylib,如果使用这些标志,则库将动态链接。

如何告诉pkg-config或链接器(最好以某种可移植的方式)我真的希望它静态链接?

我试过在pkg-config的标志之前添加-static,但这会使clang的ld尝试链接“ crt0.o”失败。

最佳答案

pkg-config --static选项依赖于.pc文件中的正确标记。如果提供--static选项未返回链接到libpng存档所必需的正确信息,则您不能将pkg-config用于此目的。

我怀疑(以及其他大多数软件包)在libpng之后的一段时间内放弃了对静态链接的支持。他们可能仍提供库存档,但是libpng 1.2文件不再正确标记为支持静态链接。您将必须手动告诉libpng pkg-config使用静态库。

关于static-linking - 如何使用pkg-config静态链接库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27586503/

相关文章:

python - Cython 静态链接与 python 运行时?

node.js - 在 OS X 和 Heroku 上使用 opencv 编译 Node 插件

compilation - 在 Mac OS X (Lion) 上编译 lsyncd

qt - qt中如何使用pkg-config进行交叉编译

c - 为什么我的 main.c 文件没有得到这个全局静态变量的更新值?

docker - 在 docker 临时镜像中运行静态构建时的安全性?

c++ - g++ 包括 boost 库

performance - 静态链接的可执行文件比动态链接的可执行文件更快吗?

homebrew - 如何修复 'brew install pkg-config' ?

python - pip install pycairo 在 osx : 'pkg-config' search path problems 上失败