简介:libre是通过异步I / O支持进行实时通信的通用库。它使用符合ANSI C89和ISO C99标准的便携式POSIX源代码编写。它强大且快速,内存占用少。它还具有RFC合规性并支持IPv4和IPv6。协议实现包括SIP,SDP,RTP / RTCP,BFCP,DNS和STUN / TURN / ICE。
一、libre库下载GitHub - creytiv/re: Generic library for real-time communications with async IO support
二、修改makefile文件在文件re-master/mk/re.mk中追加以下内容
export ARCH :=arm export CROSS_COMPILE :=arm-linux- export ASM := $(CROSS_COMPILE)asm export AR := $(CROSS_COMPILE)ar export CC := $(CROSS_COMPILE)gcc export CXX := $(CROSS_COMPILE)g++ export LD := $(CROSS_COMPILE)ld export STRIP := $(CROSS_COMPILE)strip -s -g export RM := rm -fr export CP := cp -f export MKDIR := mkdir
如下
# # re.mk - common make rules # # Copyright (C) 2010 Creytiv.com # # imported variables: # # ARCH Target architecture # CC Compiler # CROSS_COMPILE Cross-compiler prefix (optional) # EXTRA_CFLAGS Extra compiler flags appended to CFLAGS # EXTRA_LFLAGS Extra linker flags appended to LFLAGS # GCOV If non-empty, enable GNU Coverage testing # GPROF If non-empty, enable GNU Profiling # OPT_SIZE If non-empty, optimize for size # OPT_SPEED If non-empty, optimize for speed # PROJECT Project name # RELEASE Release build # SYSROOT System root of library and include files # SYSROOT_ALT Alternative system root of library and include files # USE_OPENSSL If non-empty, link to libssl library # USE_ZLIB If non-empty, link to libz library # VERSION Version number # # Exported variables: # # APP_LFLAGS linker flags for applications using modules # BIN_SUFFIX Suffix for binary executables # CC Compiler # CCACHE Compiler ccache tool # CFLAGS Compiler flags # DFLAGS Dependency generator flags # LFLAGS Common linker flags # LIBS Libraries to link against # LIB_SUFFIX Suffix for shared libraries # MOD_LFLAGS linker flags for dynamic modules # MOD_SUFFIX Suffix for dynamic modules # SH_LFLAGS linker flags for shared libraries # USE_TLS Defined if TLS is available # USE_DTLS Defined if DTLS is available # export ARCH :=arm export CROSS_COMPILE :=arm-linux- export ASM := $(CROSS_COMPILE)asm export AR := $(CROSS_COMPILE)ar export CC := $(CROSS_COMPILE)gcc export CXX := $(CROSS_COMPILE)g++ export LD := $(CROSS_COMPILE)ld export STRIP := $(CROSS_COMPILE)strip -s -g export RM := rm -fr export CP := cp -f export MKDIR := mkdir三、编译 1、执行make,报错如下
/usr/local/toolchain/gt665x/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/../arm-linux-gnueabihf/libc/usr/lib/crt1.o: In function `_start': /home/tcwg-buildslave/workspace/tcwg-make-release_1/snapshots/glibc.git~release~2.25~master/csu/../sysdeps/arm/start.S:119: undefined reference to `main' build-arm/mod/dl.o: In function `_mod_open': /home/ms/ln_work/program/video/re-master/src/mod/dl.c:34: undefined reference to `dlopen' /home/ms/ln_work/program/video/re-master/src/mod/dl.c:36: undefined reference to `dlerror' build-arm/mod/dl.o: In function `_mod_sym': /home/ms/ln_work/program/video/re-master/src/mod/dl.c:60: undefined reference to `dlerror' /home/ms/ln_work/program/video/re-master/src/mod/dl.c:62: undefined reference to `dlsym' /home/ms/ln_work/program/video/re-master/src/mod/dl.c:63: undefined reference to `dlerror' build-arm/mod/dl.o: In function `_mod_close': /home/ms/ln_work/program/video/re-master/src/mod/dl.c:85: undefined reference to `dlclose' collect2: error: ld returned 1 exit status Makefile:67: recipe for target 'libre.so' failed make: *** [libre.so] Error 12、undefined reference to `dlopen',原因在于编译选项里缺少-ldl 3、在文件re-master/mk/re.mk中追加以下内容
ifeq ($(OS),) CFLAGS += -fPIC -DLINUX LIBS += -ldl LFLAGS += -fPIC SH_LFLAGS += -shared MOD_LFLAGS += APP_LFLAGS += -rdynamic AR := ar AFLAGS := crD endif
如下
ifeq ($(OS),win32) CFLAGS += -DWIN32 -D_WIN32_WINNT=0x0501 -D__ssize_t_defined LIBS += -lwsock32 -lws2_32 -liphlpapi LFLAGS += SH_LFLAGS += -shared MOD_LFLAGS += APP_LFLAGS += -Wl,--export-all-symbols AR := ar AFLAGS := cru CROSS_COMPILE ?= $(MACHINE)- RANLIB := $(CROSS_COMPILE)ranlib LIB_SUFFIX := .dll MOD_SUFFIX := .dll BIN_SUFFIX := .exe SYSROOT := /usr/$(MACHINE)/ endif ifeq ($(OS),) CFLAGS += -fPIC -DLINUX LIBS += -ldl LFLAGS += -fPIC SH_LFLAGS += -shared MOD_LFLAGS += APP_LFLAGS += -rdynamic AR := ar AFLAGS := crD endif CFLAGS += -DOS="$(OS)"4、重新编译,生成动态库和静态库
CC build-arm/rtmp/stream.o LD libre.so AR libre.a



