x86版本JRTPLIB的编译
1.下载jrtplib-3.7.1.tar.gz和jjthread-1.3.1.tar.gz
2.进行安装,先安装jthread,再安装jrtplib。
3. jthread安装: 进入jthead解压目录,运行#./configure配置环境,如果出现permission denied,说明我们需要给文件configure执行的权限,运行#chmod a+x configure即可。配置完毕后运行#make,成功后再运行#make install。安装成功以后会在/urs/local/include目录下多出一个文件夹jthread。
4. jrtplib安装同上,全部安装好以后会在/urs/localinclude目录下多出两个文件夹jrtplib3(可能由于版本不同,生成的文件夹名字略有不同,比如叫jrtplib-3.7.1)和jthead。
复制jthead下所有文件(都是后缀为.h的头文件)到jrtplib文件夹下,目的是为了让所有头文件在一个目录下方便调用。
注意:我在编译jrtplib的时候出现如下错误:
rtperrors.cpp:206:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtperrors.cpp:206:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtperrors.cpp:206:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtperrors.cpp:206:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtperrors.cpp:206:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtperrors.cpp:206:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtperrors.cpp: In function 'std::string RTPGetErrorString(int)':
rtperrors.cpp:225:36: error: 'snprintf' was not declared in this scope
RTP_SNPRINTF(str,16,"(%d)",errcode);
^
make[1]: *** [rtperrors.lo] 错误 1
make[1]: 离开目录“/home/duliqun/jrtplib-3.7.1/src”
make: *** [all-recursive] 错误 1
[root@localhost jrtplib-3.7.1]#
下面是解决办法:来源rtperrors.cpp:
In function 'std::string RTPGetErrorString(int)': rtperrors.cpp:225: error: 'snprintf' was not declared in this scope 为了 make 成功,需要修改 jrtplib-3.7.1 源文件 rtpdefines.h
添加如下语句 :
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
5. 装好以后系统环境如下,静态动态库安装到了/usr/local/lib目录下,包括libjrtplib-3.7.1.so和libjthread-1.2.1.so等。
头文件在/usr/local/include/jrtplib-3.7.1目录下。
6. 在jrtplib源代码目录里有示例程序,在目录example下,试验一下编译example1.cpp(先删除自带的编译好的example1),使用静态库libjrtp.a链接,编译链接语句如下(注意用g++而不是gcc编译,因为是链接阶段需要g++):
g++ -o example1 example1.cpp -I /usr/local/include/jrtplib/ -ljrtp 即生成应用程序exmaple1,注意,-I(大写的i)参数中路径为jrtplib头文件目录,注意:-ljrtp是小写的“L”。根据实际情况修改。如果出现错误,说明动态链接库路径不对,有以下两种方法可以对动态链接库的路径进行设置:
a、修改动态链接库宏LD_LIBRARY_PATH。LD_LIBRARY_PATH 这个环境变量是大家最为熟悉的,它告诉loader:在哪些目录中可以找到共享库。可以设置多个搜索目录,这些目录之间用冒号分隔开。
export LD_LIBRARY_PATH=/usr/local/lib,然后再运行编译,即可通过。这种方法只是暂时修改路径,在重启shell后会失效。 b、永久生效的方法为修改动态链接库配置文件/etc/ld.so.conf,或者在/etc/ld.so.conf.d里创建一个新文件,并把需要的目录加到这个文件里。具体方法如下: #cd /etc/ld.so.conf.d #vim jrtplib 在编辑环境下加入/usr/local/lib,保存退出。 #ldconfig 重新加载动态链接库。 然后再执行编译链接,成功生成example1文件。 然后运行./example1。成功。 FROM:http://hi.baidu.com/nick0411/blog/item/8ec3a7090a6a99da63d98600.html
1.下载jrtplib-3.7.1.tar.gz和jjthread-1.3.1.tar.gz
2.进行安装,先安装jthread,再安装jrtplib。
3. jthread安装: 进入jthead解压目录,运行#./configure配置环境,如果出现permission denied,说明我们需要给文件configure执行的权限,运行#chmod a+x configure即可。配置完毕后运行#make,成功后再运行#make install。安装成功以后会在/urs/local/include目录下多出一个文件夹jthread。
4. jrtplib安装同上,全部安装好以后会在/urs/localinclude目录下多出两个文件夹jrtplib3(可能由于版本不同,生成的文件夹名字略有不同,比如叫jrtplib-3.7.1)和jthead。
复制jthead下所有文件(都是后缀为.h的头文件)到jrtplib文件夹下,目的是为了让所有头文件在一个目录下方便调用。
注意:我在编译jrtplib的时候出现如下错误:
rtperrors.cpp:206:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtperrors.cpp:206:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtperrors.cpp:206:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtperrors.cpp:206:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtperrors.cpp:206:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtperrors.cpp:206:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtperrors.cpp: In function 'std::string RTPGetErrorString(int)':
rtperrors.cpp:225:36: error: 'snprintf' was not declared in this scope
RTP_SNPRINTF(str,16,"(%d)",errcode);
^
make[1]: *** [rtperrors.lo] 错误 1
make[1]: 离开目录“/home/duliqun/jrtplib-3.7.1/src”
make: *** [all-recursive] 错误 1
[root@localhost jrtplib-3.7.1]#
下面是解决办法:来源rtperrors.cpp:
In function 'std::string RTPGetErrorString(int)': rtperrors.cpp:225: error: 'snprintf' was not declared in this scope 为了 make 成功,需要修改 jrtplib-3.7.1 源文件 rtpdefines.h
添加如下语句 :
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
5. 装好以后系统环境如下,静态动态库安装到了/usr/local/lib目录下,包括libjrtplib-3.7.1.so和libjthread-1.2.1.so等。
头文件在/usr/local/include/jrtplib-3.7.1目录下。
6. 在jrtplib源代码目录里有示例程序,在目录example下,试验一下编译example1.cpp(先删除自带的编译好的example1),使用静态库libjrtp.a链接,编译链接语句如下(注意用g++而不是gcc编译,因为是链接阶段需要g++):
g++ -o example1 example1.cpp -I /usr/local/include/jrtplib/ -ljrtp 即生成应用程序exmaple1,注意,-I(大写的i)参数中路径为jrtplib头文件目录,注意:-ljrtp是小写的“L”。根据实际情况修改。如果出现错误,说明动态链接库路径不对,有以下两种方法可以对动态链接库的路径进行设置:
a、修改动态链接库宏LD_LIBRARY_PATH。LD_LIBRARY_PATH 这个环境变量是大家最为熟悉的,它告诉loader:在哪些目录中可以找到共享库。可以设置多个搜索目录,这些目录之间用冒号分隔开。
export LD_LIBRARY_PATH=/usr/local/lib,然后再运行编译,即可通过。这种方法只是暂时修改路径,在重启shell后会失效。 b、永久生效的方法为修改动态链接库配置文件/etc/ld.so.conf,或者在/etc/ld.so.conf.d里创建一个新文件,并把需要的目录加到这个文件里。具体方法如下: #cd /etc/ld.so.conf.d #vim jrtplib 在编辑环境下加入/usr/local/lib,保存退出。 #ldconfig 重新加载动态链接库。 然后再执行编译链接,成功生成example1文件。 然后运行./example1。成功。 FROM:http://hi.baidu.com/nick0411/blog/item/8ec3a7090a6a99da63d98600.html