我正在尝试弄清楚如何从live555媒体服务器源编译testProgs目录中的testOnDemandRTSPServer.cpp。我正在使用Ubuntu 11.04并安装了 liblivemedia-dev 库。
我已将标头包含(在testOnDemandRTSPServer.cpp内)修改为:
#include <liveMedia/liveMedia.hh>
#include <BasicUsageEnvironment/BasicUsageEnvironment.hh>
并使用此命令编译:
g++ -lliveMedia -lgroupsock -lBasicUsageEnvironment -lUsageEnvironment testOnDemandRTSPServer.cpp -o RTSPServer
然后导致错误:
In file included from /usr/include/liveMedia/MediaSink.hh:25:0,
from /usr/include/liveMedia/RTPSink.hh:25,
from /usr/include/liveMedia/MultiFramedRTPSink.hh:26,
from /usr/include/liveMedia/AudioRTPSink.hh:25,
from /usr/include/liveMedia/MPEG1or2AudioRTPSink.hh:25,
from /usr/include/liveMedia/liveMedia.hh:27,
from testOnDemandRTSPServer.cpp:21:
/usr/include/liveMedia/FramedSource.hh:25:23: fatal error: NetCommon.h: No such file or directory
compilation terminated.
此时我觉得很好,这只是头文件之间的重定向问题。然后,我修改了/usr/include/liveMedia/FramedSource.hh以使用#include <groupsock/NetCommon.h>
而不是#include "NetCommon.h"
- 因为NetCommon.h位于/ usr / include / groupsock /
这很有效,直到我发现了其他一百万个重定向问题,如:
/usr/include/liveMedia/Media.hh:29:22: fatal error: Boolean.hh: No
such file or directory
/usr/include/liveMedia/Media.hh:33:31: fatal
error: UsageEnvironment.hh: No such file or directory
那么,我是否首先正确链接到live555库,还是必须根据需要不断更改标题位置?
所以我继续使用上述方法更改标题位置,但现在我得到了一百万个未定义的引用错误... as shown here(抱歉,这里发布的内容太多了)
现在我正在摸不着头脑,因为原来的testOnDemandRTSPServer.cpp没有任何故障编译(使用configure / make方法);我唯一改变的是在哪里寻找头文件。
答案 0 :(得分:1)
完全没有使用Ubuntu打包的库......但是只需编译来自Live555 website的源代码。
在自定义Makefile中,这是我用来编译自己的程序和testOnDemandRTSPServer的结构:
LIVE_INCLUDES=-I../UsageEnvironment/include -I../groupsock/include -I../liveMedia/include -I../BasicUsageEnvironment/include
LIVE_LIBS=../liveMedia/libliveMedia.a ../groupsock/libgroupsock.a ../BasicUsageEnvironment/libBasicUsageEnvironment.a ../UsageEnvironment/libUsageEnvironment.a
g++ $(LIVE_INCLUDES) testOnDemandRTSPServer.c -c
g++ -o testOnDemandRTSPServer -L. testOnDemandRTSPServer.o $(LIVE_LIBS)
它也解决了未定义的引用错误:P