免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1745 | 回复: 1
打印 上一主题 下一主题

RTP协议栈 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-13 15:38 |只看该作者 |倒序浏览
最近需要做的个项目的内容的大体上的需要是,在LINUX主机上做一视频服务器。用到了RTP协议栈来传输视频
下面记下开始的几个步骤:
1.既然要用到RTP协议栈,当然要下载RTP协议了。
下载地址是:
http://savannah.c3sl.ufpr.br/linphone/ortp/sources/?C=S;O=A
我下载了最上面的那个
ortp-0.4.2.tar.gz


2.接下来就是要装到LINUX主机上了。
首先要解压,接着解压目录下运行命令:
./configure
make
make install
这样由协议栈生成的库文件会默认安装在文件夹/usr/local/lib下。
【注意】:在./configure后可以加上命令来解如:
   ##./configure --prefix=/root/josua --host=arm-linux --target=arm-linux --disable-static --enable-fixed-point --disable-glib
//需要加上 --disable-glib(禁止glib库),否则会应为缺少gthread 等库而无法编译。
其中prefix为你库的安装路径。

3.接着就是要为你的动态链接库建立共享了
如果你不做这一步,即使你的应用程序编译通过,在执行的时候就会出现如下的错误:
error while loading shared libraries:libortp.so.0:cannot open shared object file:no such file or directory.

建立动态链接库共享的方法如下:三种方法来共享动态链接库:(注:均须在超级用户状态下操作,以我的动态链接库libmy.so共享过程为例)
  (1)拷贝动态链接库到系统共享目录下,或在系统共享目录下为该动态链接库建立个连接(硬连接或符号连接均可,常用符号连接).这里说的系统共享目录,指 的是LINUX动态链接库存放的目录,它包含/lib,/usr/lib以及/etc/ld.so.conf文件内所列的一系列目录.
# cp libmy.so /lib
# ldconfig
#
或:
# ln -s `pwd`/libmy.so /lib
# ldconfig
#
(2)将动态链接库所在目录名追加到动态链接库配置文件/etc/ld.so.conf中.
# pwd >> /etc/ld.so.conf
# ldconfig
#
(3)利用动态链接库管理命令ldconfig,强制其搜索指定目录,并更新缓存文件,便于动态装入.
# ldconfig `pwd`
#
  需要说明的是,这种操作方法虽然有效,但效果是暂时的,供程序测试还可以,一旦再度运行ldconfig,则缓存文件内容可能改变,所需的动态链接库可能 不被系统共享了.与之相比较,前两种方法是可靠的方法,值得业已定型的动态链接库共享时采用.前两种方法还有一个特点,即最后一条命令都是 ldconfig,也即均需要更新一下缓存文件,以确保动态链接库的共享生效.
4.经过上面的几步后,你的RTP栈就建立起来了。现在你的应用程序就可以应用RTP中的API了。要注意的是编译时要引用动态链接库。有下面的几种方法:
1)当所用的动态链接库在系统目录(/lib,/usr/lib)下时,可用编译选项-l来引用.即:
# cc -lmy -o ady ady.c
#
  注:编译时用-l选项引用动态链接库时,库名须使用其缩写形式.本例的my,表示引用libmy.so库.若引用光标库libncurses.so,须用-lncurses.注意,-l选项与参数之间不能有空格,否则会出错.
(2)当所用的动态链接库在系统目录(/lib,/usr/lib)以外的目录时,须用编译选项-L来指定动态链接库所在的目录(供编译器查找用),同时用-l选项指定缩写的动态链接库名.即:
# cc -L/usr/zzz/lib -lmy -o ady ady.c
#
(3)直接引用所需的动态链接库.即:
# cc -o ady ady.c libmy.so
#

# cc -o ady ady.c /lib/libmy.so
#
如果你不这样做就可能出现如下的错误:
/tmp/cc33Kydu.o: In function `main':
/tmp/cc33Kydu.o(.text+0xe): undefined reference to `log'
collect2: ld returned 1 exit status

好了,写了这么多。一个RTP的协议栈建立起来了。



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/50545/showart_1129855.html

论坛徽章:
0
2 [报告]
发表于 2013-03-09 10:12 |只看该作者
过来坐一坐,学一学
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP