栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

嵌入式linux开发,libre库移植

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

嵌入式linux开发,libre库移植

        简介: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 1
2、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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/740689.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号