Linux 编译jrtplib-3.9.1 jthread-1.3.1
一:下载三个文件
1.jrtplib-3.9.1:http://research.edm.uhasselt.be/~jori/page/index.php?n=CS.Jrtplib
2.jthread-1.3.1:http://research.edm.uhasselt.be/~jori/page/index.php?n=CS.Jthread
3.cmake-2.8.12.2:http://www.cmake.org/
截止今日全是最新版本
二:放到Linux任意目录下分别解压三个文件
三:因为我的linux下没有cmake所以要安装cmake,可以用cmake -version 命令查看自己系统中有无及其版本
进入cmake目录:分别输入命令
./bootstrap
make
make install
make -version查看安装是否成功
四:jthread和jrtplib是配合使用的,jthread负责线程调用函数和mutex,所以要先编译jthread,因为编译jrtplib时会用到jthread的编译好的头文件
1.进入jthread目录分别执行下列命令
cmake CMakeLists.txt 生成makefile
make
make install
2.进入jrtplib目录,执行命令同上
五:查看编译完的文件
1. /usr/local/lib 目录下放置着编译的jrtplib和jthread的库,主要的是libjrtp.a libjthread.a静态库, libjrtp.so.3.9.1 libjthread.so.1.3.1动态库,libjrtp.so libjthread.so 链接
2. /usr/local/incude 多了两个文件夹:jrtplib3 jthread
六:编译jrtplib解压文件中的example下的example1.cpp程序
g++ example1.cpp -o example1_pc
出现错误:rtpsession.h 没有那个文件或目录........................
原因:Linux系统默认查找的头文件在usr/include下面,我们编译后的头文件在usr/local/include下面,所以找不到是情有可源的
解决1:直接将usr/local/include下的两个文件夹复制到/usr/include目录下
解决2:或者做个软连接:
ln -s /usr/local/include/jrtplib3 /usr/include/jrtplib
ln -s /usr/local/include/jthread /usr/include/jthread
通过1/2这两种其实还是解决不了的,因为默认需找的是/usr/include文件夹下的内容,现在相当于放在 了/usr/include/jrtplib目录下了,所以要讲源程序example1.cpp中的“”头文件加上jrtplib/ eg:"jrtplib/rtpsession.h"
当有调用jthread头文件的地方要添加“jthread/”
重新执行命令:g++ example1.cpp -o example1_pc
出现错误:undefined reference to jrtplib::RTPGetErrorString(int) ...........................................
解决:这是因为编译的时候链接库没有找到所致
所以编译时添加上链接库:g++ example1.cpp -l jrtp -o example1_pc
编译通过
七:运行可执行程序
./example1_pc
出现错误:error while loading shared libraries :libjrtp.so.3.9.1:cannot open shared object file :no such file
解决:这是因为没有找到动态链接库所致,因为动态链接库还在/usr/local/lib目录下呢,跟include是相同原理
直接将四个文件 libjrtp.so.3.9.1 libjthread.so.1.3.1libjrtp.so libjthread.so复制到/usr/lib下就OK了
重新执行:./example1_pc
出现;Enter local portbase
OK大功告成。