Ubuntu环境下带MariaDB C连接器的C程序部署最佳实践及疑问
MariaDB C连接器相关问题解答
1. libmariadb3在Ubuntu机器中的存放位置
- 核心动态库文件:64位Ubuntu系统下,通常位于
/usr/lib/x86_64-linux-gnu/目录,以libmariadb.so.3(软链接)和对应的版本化实体文件(如libmariadb.so.3.xx.xx)形式存在 - 辅助文件:文档存放在
/usr/share/doc/libmariadb3/,pkgconfig配置文件mariadb.pc位于/usr/lib/x86_64-linux-gnu/pkgconfig/
2. 程序如何找到该库
- 编译阶段:编译命令中的
$(mariadb_config --libs)会自动向gcc传递链接参数,包括-lmariadb(指定链接的库名)和-L/usr/lib/x86_64-linux-gnu(指定库的搜索路径),让编译器能定位到库文件完成链接 - 运行阶段:Ubuntu的动态链接器
ld.so会读取/etc/ld.so.conf及/etc/ld.so.conf.d/下的配置,默认包含系统标准库路径(如/usr/lib/x86_64-linux-gnu/),启动程序时会自动在这些路径中查找所需的libmariadb.so.3
3. 部署到其他Ubuntu机器的最佳方式(重点)
对于小型简单应用,最简且专业的部署方式分两种场景:
在线目标机器(能访问Ubuntu软件源)
直接通过系统包管理器安装依赖,这是最稳定、易维护的方式:
sudo apt update && sudo apt install libmariadb3
这种方式由Ubuntu官方维护包,自动处理依赖兼容性、后续更新,无需手动管理库文件。
离线目标机器(无法访问软件源)
从已安装libmariadb3的同架构Ubuntu机器上复制必要文件:
- 复制核心库文件:将
/usr/lib/x86_64-linux-gnu/下的libmariadb.so.3软链接和对应的版本化实体文件(如libmariadb.so.3.3.3)复制到目标机器的相同路径,或程序所在目录 - 如果放到程序目录,运行前需设置环境变量让动态链接器优先搜索当前目录:
export LD_LIBRARY_PATH=$(pwd):$LD_LIBRARY_PATH ./program
复制时建议用cp -a命令保留文件权限和属性,避免权限问题。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

