Linux 应用程序 - 最小化依赖性

标签 linux dependencies shared-libraries mysql++

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

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

最佳答案

这并不容易。你需要

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

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

关于Linux 应用程序 - 最小化依赖性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2209209/

相关文章:

linux - 检测 Debian 上的 RAID 硬件或软件

linux - node.js 将 REPL 附加到脚本

Maven OpenSAML 依赖问题

shared-libraries - 来自动态/静态库的可执行文件的大小

linux - 权限被拒绝 OsError : [Errno 13] (file in use) Celery - Redis -Django

linux - 根据文本文件名创建目录名

gradle - 在Gradle中找出哪个版本的Dropwizard依赖

MySql数据库结构——外键逆向工程

c++ - 如何有选择地依赖 gcc 的共享对象?

installation - 在 ATLAS 中构建共享库