Linux 编译jrtplib

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大功告成。

那些无法讲述的悲伤和苍凉,

Linux 编译jrtplib

相关文章:

你感兴趣的文章:

标签云: