【问题标题】:Linux application - minimize the dependenciesLinux 应用程序 - 最小化依赖关系
【发布时间】:2010-02-05 17:52:57
【问题描述】:

我试图最小化由共享库 mysql++ 引起的依赖关系。我知道这听起来很奇怪;但我正在努力解决 Slamd64 的平台限制(安装了 32 位兼容性),它本身没有某些库。由于依赖于其他应用程序,我处于无法更改 libmysqlclient 设置的情况。

使 mysql++ 库静态链接到它的依赖项的说明,这就是我想要做的。不要试图将我的应用程序静态链接到 mysql++;我还是想动态链接到mysql++。

【问题讨论】:

    标签: linux dependencies shared-libraries mysql++


    【解决方案1】:

    这并不容易。你需要

    1. 获取分发所需的 .a 库列表(不要在此处添加系统安装的库,如 libc.a)
    2. 静态编译所有 .a,但启用 -fPIC
    3. 将所有 .a 链接到一个 .so 中
    4. 检查,你能不能 ldd 这个 .so 并将其加载到应用程序中

    使用 ENV LD_LIBRARY_PATH 和 LD_PRELOAD 可以解决问题。它们可以帮助您屏蔽系统范围的库并将应用程序指向您的库。只需用谷歌搜索这个变量。

    【讨论】:

    • 基本上不像其他人那么直接,尤其是使用一个相当复杂的 slackware mysql 包,它将所有(头文件、静态库、动态库、服务器和客户端)组合到一个超级包中。
    • 你可以使用自定义(动态)libmysqlclient 吗?只需将所有自定义库移动到另一个路径。
    • 感谢osgx;我可能可以,但在构建环境等中保持这种方式是不可行的。
    猜你喜欢
    • 2010-11-17
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 2011-04-18
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多