我正在尝试最小化由共享库 mysql++ 引起的依赖性。我知道这听起来很奇怪;但我正在努力解决 Slamd64(安装了 32 位兼容性)的平台限制,它本身没有某些库。由于对其他应用程序的依赖性,我处于无法更改 libmysqlclient 设置的情况。
使 mysql++ 库静态链接到它的依赖项的说明,这就是我正在尝试做的。不要试图将我的应用程序静态链接到 mysql++;我还是想动态链接到mysql++。
最佳答案
这并不容易。你需要
- 获取分发所需的 .a 库列表(不要在此处添加系统安装的库,如 libc.a)
- 静态编译所有.a,但启用-fPIC
- 将所有 .a 链接成一个 .so
- 检查一下,你能 ldd 这个 .so 并将它加载到应用程序中吗
使用 ENV LD_LIBRARY_PATH 和 LD_PRELOAD 可以解决这个问题。它们可以帮助您屏蔽系统范围的库并将应用程序指向您的库。只需谷歌搜索此变量。
关于Linux 应用程序 - 最小化依赖性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2209209/