Live555交叉编译

Creative Commons
本作品采用知识共享署名

本文介绍如何交叉编译live555

下载代码

http://www.live555.com/liveMedia/public/live.2018.02.28.tar.gz

1
2
tar -zxvf live.2018.02.28.tar.gz
cd live

修改config

1
vim config.armlinux
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CROSS_COMPILE?=		arm-linux-androideabi-
COMPILE_OPTS = $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -pie -fPIE
C = c
C_COMPILER = $(CROSS_COMPILE)gcc
C_FLAGS = $(COMPILE_OPTS)
CPP = cpp
CPLUSPLUS_COMPILER = $(CROSS_COMPILE)g++
CPLUSPLUS_FLAGS = $(COMPILE_OPTS) -Wall -DBSD=1
OBJ = o
LINK = $(CROSS_COMPILE)g++ -o
LINK_OPTS =
CONSOLE_LINK_OPTS = $(LINK_OPTS)
LIBRARY_LINK = $(CROSS_COMPILE)ar cr
LIBRARY_LINK_OPTS = $(LINK_OPTS)
LIB_SUFFIX = a
LIBS_FOR_CONSOLE_APPLICATION =
LIBS_FOR_GUI_APPLICATION =
EXE =

编译

1
2
./genMakefiles armlinux
make -j

简单的rtsp server

将文件文件myser.cppmakefile_my放到live/liveMedia下执行(代码来源http://blog.csdn.net/gavinr/article/details/7050797)

1
make -f makefile_my

说明

使用android ndk编译出来的可执行程序如果出现”error: only position independent executables (PIE) are supported”提示,需要在makefile的编译选项中添加

1
-pie -fPIE

Android 4.1开始开启PIE安全机制,如果调用的可执行文件不是基于PIE方式编译的,则无法运行
-fpie(Position Independent Executable)生成的可执行文件每次执行时代码、数据、stack和heap都被随机映射到不同的虚地址上,加大了被破解的难度