linux下将程序中用到的第三方库编译到自己的程序中

79 篇文章 1 订阅
43 篇文章 0 订阅

我在linux下写了个C语言的程序,但是其中用了一些第三方的函数库。也就是说我的程序只有在安装了这些库的linux系统中才能运行。我现在的想法是在我编译自己的程序的时候就把这些第三防库编译到我的程序中,这样我就可以在没有安装这些库的linux操作系统上运行了。但是我不知道具体怎么做,我该看哪些资料呢?请给个思路,或者给个关键词也好。谢谢

不管什么库文件,你都既要在包含.h文件(不然编译通不过:有未声明的函数),也要在gcc选项里面指定.so文件的位置(不然链接通不过:未知的符号)
比如
gcc -I include_path -L lib_path -lyourlib
include_path改成你头文件的目录
lib_path改成你动态库文件的目录
-lyourlib 改成l加上你要引用的库文件名字
比如libpthread.so就改成-lpthread

看这个第三方库是否提供了什么样的开发包支持: 

举例,头文件名 abc.h 函数名为 abc_test(); 第三方库头文件目录为/abc/include/ 链接库目录为/abc/lib/ 
1、头文件和源文件:这是最好的情况,引用头文件和相关函数即可。 
如: 
#include "abc.h" 
abc_test();//直接调用即可 
编译时,Makefile中加入编译选项 -I/abc/include 为了能将库的头文件引进来。 
而且你的程序运行时,不再需要这个第三方库。 

2、静态链接库:引用头文件和相关函数,设提供的静态库名为 libabc.lib 
编译时,Makefile中加入 编译选项 
1)-I/abc/include #编译时加,为了能将库的头文件引进来; 
2)-L/abc/lib -labc #链接时加的 
而且你的程序运行时,不再需要这个第三方库。 

3、动态链接库,设动态链接库为libabc.so 
调用动态链接库文件,需要dlopen等函数 
编译时,Makefile中加入 编译选项 
1)-I/abc/include #编译时加,为了能将库的头文件引进来; 
2)-L/abc/lib -labc #链接时加的 
注意:你的程序运行时,需要这个第三方库的libabc.so文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值