1、源码下载:
SRS源码下载 : git clone http://git.oschina.net/winlinvip/srs.oschina
参考文章中介绍的是这个下载路径https://github.com/ossrs/srs,但是克隆下载时度很慢更换这个源后速度很快。
2、configure
在configure之前需要修改/trunk/auto/setup_variables.sh;
以前:
if [ $SRS_ARM_UBUNTU12 = YES ]; then
__SrsArmCC="arm-linux-gnueabi-gcc";
__SrsArmGCC="arm-linux-gnueabi-gcc";
__SrsArmCXX="arm-linux-gnueabi-g++";
__SrsArmAR="arm-linux-gnueabi-ar";
__SrsArmLD="arm-linux-gnueabi-ld";
__SrsArmRANDLIB="arm-linux-gnueabi-ranlib";
fi
修改:
if [ $SRS_ARM_UBUNTU12 = YES ]; then
__SrsArmCC="arm-none-linux-gnueabi-gcc";
__SrsArmGCC="arm-none-linux-gnueabi-gcc";
__SrsArmCXX="arm-none-linux-gnueabi-g++";
__SrsArmAR="arm-none-linux-gnueabi-ar";
__SrsArmLD="arm-none-linux-gnueabi-ld";
__SrsArmRANDLIB="arm-none-linux-gnueabi-ranlib";
fi
原因是:DM8168的交叉编译链arm-none-linux-gnueabi-gcc,需要修改成为DM8168的编译链
./configure --with-ssl --with-hls --with-librtmp --with-arm-ubuntu12
3、make
make的时候会报错,编译时出现链接问题:
../../objs/openssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
dso_dlfcn.c:(.text+0x1c): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x30): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x3c): undefined reference to `dlclose'
../../objs/openssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_pathbyaddr':
dso_dlfcn.c:(.text+0x68): undefined reference to `dladdr'
dso_dlfcn.c:(.text+0xb8): undefined reference to `dlerror'
../../objs/openssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':
dso_dlfcn.c:(.text+0x3bc): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x45c): undefined reference to `dlerror'
../../objs/openssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_var':
dso_dlfcn.c:(.text+0x4f0): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x58c): undefined reference to `dlerror'
../../objs/openssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_unload':
dso_dlfcn.c:(.text+0x5e8): undefined reference to `dlclose'
../../objs/openssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':
dso_dlfcn.c:(.text+0x67c): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x6cc): undefined reference to `dlclose'
dso_dlfcn.c:(.text+0x6f8): undefined reference to `dlerror'
collect2: ld returned 1 exit status
make[3]: *** [objs/srs_flv_parser] 错误 1
make[3]:正在离开目录 `/zhiboji/srs/srs.oschina_cross/trunk/research/librtmp'
make[2]: *** [ssl] 错误 2
make[2]:正在离开目录 `/zhiboji/srs/srs.oschina_cross/trunk/research/librtmp'
make[1]: *** [librtmp] 错误 2
make[1]:正在离开目录 `/zhiboji/srs/srs.oschina_cross/trunk'
make: *** [default] 错误 2
修改/trunk/research/librtmp/Makefile
1)GCC= arm-none-linux-gnueabi-gcc //换成DM8168交叉编译链
2) # for arm.
ifeq ($(GCC), arm-none-linux-gnueabi-gcc)
EXTRA_CXX_FLAG = -g -O0 -ldl -static -lstdc++
endif
编译生成:
执行文件 /trunk/objs/srs
生成的库 /trunk/objs/lib/srs_librtmp.a
问题:objs/st/libst.a: error adding symbols: 文件格式错误 出现这种问题,需要修改 /objs/Makefile
GCC = arm-none-linux-gnueabi-gcc
CXX = arm-none-linux-gnueabi-g++
AR = arm-none-linux-gnueabi-ar
LINK = arm-none-linux-gnueabi-g++