例如我们的程序test.c是在linux上使用c连接mysql,这个时候我们需要去mysql官网下载MySQL Connectors的C库,下载下来解压之后,有一个include文件夹,里面包含mysql connectors的头文件,还有一个lib文件夹,里面包含二进制so文件libmysqlclient.so
其中inclulde文件夹的路径是 /usr/dev/mysql/include ,lib文件夹是 /usr/dev/mysql/lib
5.1 编译成可执行文件
首先我们要进行编译test.c为目标文件,这个时候需要执行
gcc –c –I /usr/dev/mysql/include test.c –o test.o
5.2 链接
最后我们把所有目标文件链接成可执行文件:
gcc –L /usr/dev/mysql/lib –lmysqlclient test.o –o test
Linux下的库文件分为两大类分别是动态链接库(通常以.so结尾)和静态链接库(通常以.a结尾),二者的区别仅在于程序执行时所需的代码是在运行时动态加载的,还是在编译时静态加载的 。
5.3 强制链接时使用静态链接库
默认情况下 , GCC在链接时优先使用动态链接库,只有当动态链接库不存在时才考虑使用静态链接库,如果需要的话可以在编译时加上-static选项,强制使用静态链接库 。
在/usr/dev/mysql/lib目录下有链接时所需要的库文件libmysqlclient.so和libmysqlclient.a,为了让GCC在链接时只用到静态链接库,可以使用下面的命令:
gcc –L /usr/dev/mysql/lib –static –lmysqlclient test.o –o test
静态库链接时搜索路径顺序:
1. ld会去找GCC命令中的参数-L
2. 再找gcc的环境变量LIBRARY_PATH
3. 再找内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的
动态链接时、执行时搜索路径顺序:
1. 编译目标代码时指定的动态库搜索路径
2. 环境变量LD_LIBRARY_PATH指定的动态库搜索路径
3. 配置文件/etc/ld.so.conf中指定的动态库搜索路径
4. 默认的动态库搜索路径/lib
5. 默认的动态库搜索路径/usr/lib
有关环境变量:
LIBRARY_PATH环境变量:指定程序静态链接库文件搜索路径
【Linux GCC常用命令详解】LD_LIBRARY_PATH环境变量:指定程序动态链接库文件搜索路径
- 火猫直播怎么添加常用频道?
- 几种常用的治感冒流鼻涕的中成药
- 常用药物剂型的正确使用方法有哪些
- 方舟生存进化各种代码 方舟生存进化常用代码有哪些
- 汽车怎么清理排水孔 检查清理车辆排水孔的常用方法
- 治疗早泄的常用方法都有哪几种
- 制作短视频的电脑软件和手机软件有哪些,大家常用的,小白自学?
- 常用网线的接头的接法、排序,详细解读 网线接头器线序是什么
- 常用的Java开发软件有哪些?
- 保存食品的几种方法 常用食品保存的方法
