凡铁游戏提供最新游戏下载和手游攻略!

Live555 学习教程: 深入理解 Makefile 构建

发布时间:2024-08-28浏览:47

前言、

这里我会写下自己的学习过程,以及学习中遇到的那些问题一一记录下来,望对初学会有所帮助。

学习开源代码,我认同一种说法,“尽可能在代码内找答案,而不是在代码外找答案”因为你看到那篇文章的时候有可能已经过时了,以至于不精确.其次他人对整个项目的掌握程度你并不清楚,你并不一定能完全理解他人的文章,怎么说也都是他人的东西,并不是说你读了,就能成为你的东西。

live555简介

live555是最重量级的一个C++流媒体开源项目,其中不仅包括了传输协议(SIP、RTP)、音视频编码器(H.264、MPEG4)等,还包括流媒体服务器的例子,是流媒体项目的首选,里面的传输模块是非常值得视频会议开发作为参考的。

下载live555

下载源代码:http://www.live555.com/liveMedia/public/选择live555-x.tar.gz下载。

live的编译

生成Makefile

解压完源代码,我们可以并没看到源代码下有Makefile文件吧,这是因为live555是可多种平台编译的,所以编译前肯定要根据平台不同做不不同的配置吧,我们先找找配置文件。可以看到根目录下很多config.xxx文件,打开一看也确实像是配置文件,还有makefile.head、makefile.tail、genMakefile文件不妨都打开来看一看.

打开genMakefile

1. #!/bin/sh 2. 3. usage() { 4. echo "Usage: $0 <os-platform>" 5. exit 1 6. } 7. 8. if [ $# -ne 1 ] 9. then 10. usage $* 11. fi 12. 13. platform=$1 14. subdirs="liveMedia groupsock UsageEnvironment BasicUsageEnvironment testProgs mediaServer proxyServer" 15. 16. for subdir in $subdirs 17. do 18. /bin/rm -f $subdir/Makefile 19. cat $subdir/Makefile.head config.$platform $subdir/Makefile.tail > $subdir/Makefile 20. chmod a-w $subdir/Makefile 21. done 22. 23. /bin/rm -f Makefile 24. cat Makefile.head config.$1 Makefile.tail > Makefile 25. chmod a-w Makefileplatform=$1

这是一个shell脚本,可以看到platform = 我们输入的第一个参数,就是选择平台。

cat $subdir/Makefile.head config.$platform $subdir/Makefile.tail > $subdir/Makefile

可以看到这个shell脚本会先进入各个子目录把Makefile.head config.$platform Makefile.tail 三个文件合成Makefile文件. 然后再在根目录合成Makefile文件.这下就清晰了Makefile怎么生成的了。

Make的生成目标

./genMakefile linux制作好Makefile后,打开根目录下的Makefile查找它的生成目标。

1.all: 2. cd $(LIVEMEDIA_DIR) ; $(MAKE) 3. cd $(GROUPSOCK_DIR) ; $(MAKE) 4. cd $(USAGE_ENVIRONMENT_DIR) ; $(MAKE) 5. cd $(BASIC_USAGE_ENVIRONMENT_DIR) ; $(MAKE) 6. 7. cd $(TESTPROGS_DIR) ; $(MAKE) 8. cd $(MEDIA_SERVER_DIR) ; $(MAKE) 9. cd $(PROXY_SERVER_DIR) ; $(MAKE)

我们先看第一个目标目录LiveMedia下的Makefile

可以看到该目录编译的目标 是libliveMedia.a 静态库. 先编译一下,看看是不是这样. make 编译live555.

root@ubuntu:/OpenSrc/live# find -name "*.a" 2../groupsock/libgroupsock.a 3../liveMedia/libliveMedia.a 4../BasicUsageEnvironment/libBasicUsageEnvironment.a 5../UsageEnvironment/libUsageEnvironment.a

可以看到本次编译共生成了4个静态库,正好是前4个编译的目标.

再看看后面三个目标 TESTPROG目录下的Makefile是这样子的.

MULTICAST_APPS = $(MULTICAST_STREAMER_APPS) 2.UNICAST_APPS = $(UNICAST_STREAMER_APPS) 3.MISC_APPS = testMPEG1or2Splitter$(EXE) 4. 5.ALL = $(MULTICAST_APPS) $(UNICAST_APPS) $(MISC_APPS) 6.all: $(ALL) 7. 8.extra: testGSMStreamer$(EXE) 9. 10..$(C).$(OBJ): 11. $(C_COMPILER) -c $(C_FLAGS) lt; 12..$(CPP).$(OBJ): 13. $(CPLUSPLUS_COMPILER) -c $(CPLUSPLUS_FLAGS) lt;

根据名字,可以先猜测TestPROG编译的目标应该是一些测试用的应用程序.

1.PROXY_SERVER = live555ProxyServer$(EXE) 2.MEDIA_SERVER = live555MediaServer$(EXE)

同时可以看到另外两个目标也是应用, 这样整个Live默认配置下,编译生成的那些东西就清楚了:4个静态库,3个应用。

总结;

用户评论

棃海

这篇文章看起来很有帮助,想入门Live555正好用来参考!

    有12位网友表示赞同!

单身i

我一直想学习一下多媒体技术,这个教程好像是个很好的开始。

    有5位网友表示赞同!

代价是折磨╳

Makefile真是个好工具,这篇教程能让我更好地理解它是如何应用于编译工程的?

    有18位网友表示赞同!

涐们的幸福像流星丶

live555是一个很强大的多媒体框架,能学到这么多实用的知识真棒!

    有16位网友表示赞同!

不浪漫罪名

学习新技术总是充满挑战,但是有了这个教程应该更容易掌握一些。

    有16位网友表示赞同!

箜明

我之前就对Live555感兴趣,这次终于有时间学习了。

    有20位网友表示赞同!

情深至命

感觉这个教程内容非常系统,从Makefile到编译Live555都讲得很细致。

    有13位网友表示赞同!

温柔腔

学习Live555能开拓我的视野,说不定将来可以用在实际项目中。

    有14位网友表示赞同!

青山暮雪

这个教程看起来很专业,希望我能顺利跟随它的步骤完成学习。

    有5位网友表示赞同!

我绝版了i

我对开源软件比较感兴趣,Live555就是很好的案例,期待深入了解它!

    有6位网友表示赞同!

熏染

以后遇到类似的编译问题,可以参考这篇教程。

    有15位网友表示赞同!

回忆未来

感谢作者分享这个宝贵的学习资源!

    有6位网友表示赞同!

红尘烟雨

希望教程后续还有更新内容,继续讲解Live555的其他功能。

    有7位网友表示赞同!

放血

要学好Live555需要时间和实践积累,希望我能坚持下来学习。

    有5位网友表示赞同!

(り。薆情海

通过这个教程,我相信我对编译技术也会更了解了。

    有18位网友表示赞同!

生命一旅程

感觉这篇教程很适合想学习 multimedia 和 linux 的同学!

    有7位网友表示赞同!

墨城烟柳

对编程还是挺感兴趣的,看看Live555能学到些什么新东西吧!

    有7位网友表示赞同!

热点资讯