交叉编译-1:使用Android NDK编译Android平台的pjsip库

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

编译好的库下载地址:pjsip

一、源码下载

        进入网址http://www.pjsip.org/download.htm,下载pjsip源码压缩包pjproject-2.7.1.tar.bz2

二、编译准备

       1. 在虚拟机下使用tar jxvf pjproject-2.7.1.tar.bz2命令解压压缩包。

       2. 进入pjproject-2.7.1/pjlib/include/pj目录下,新建config_site.h文件

        config_site.h内容如下

/* Activate Android specific settings in the 'config_site_sample.h' */
#define PJ_CONFIG_ANDROID 1
#include <pj/config_site_sample.h>

        3.设置Android NDK编译环境

 

export ANDROID_NDK_ROOT=/usr/android/android-ndk-r14b

 

        4.新建pjsip.sh脚本

 

 

#pjsip.sh脚本
LDFLAGS=-nostdlib
CC=/usr/android/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
export CC
sysroot=/usr/android/android-ndk-r14b/platforms/android-16/arch-arm
NDK_TOOLCHAIN_VERSION=4.9 TARGET_ABI=armeabi-v7a APP_PLATFORM=android-21 ./configure-android --use-ndk-cflags --enable-shared


NDK_TOOLCHAIN_VERSION:编译器类型、版本

 

 

TARGET_ABI:可以选择指定单个目标体系结构,例如armeabi-v7a、mips、x86。默认情况下,目标体系结构是armeabi。只在指定的时候使用-use-ndk-cflags

APP_PLATFORM:可以选择指定平台级别,例如android-9。默认情况下,configure将使用探测到的最大平台级别

--use-ndk-cflags:系统选项,使用此选项时,需要使用Android NDK r9或更高版本。

--enable-shared:生成动态库

 

三、编译

      1. 使用chmod +x pjsip.sh给脚本授权

      2. 执行./pjsip.sh

      3. make dep && make

 

       生成的库在lib目录下

        pjproject-2.7.1/pjlib/lib

        pjproject-2.7.1/pjlib-util/lib

        pjproject-2.7.1/pjnath/lib

三、取消动态库pjsip的软连接

注意:如果需要取消pjsip库的软连接,则需要分别修改目录下的Makefile文件,再根据以上步骤编译完成生成静态库和动态库。

1. 修改pjproject-2.7.1\pjlib\build目录下的Makefile

 

include ../../build.mak
include ../../version.mak
include $(PJDIR)/build/common.mak

export LIBDIR := ../lib
export BINDIR := ../bin

RULES_MAK := $(PJDIR)/build/rules.mak

export PJLIB_LIB := libpj-$(TARGET_NAME)$(LIBEXT)

ifeq ($(PJ_SHARED_LIBRARIES),)
else
#export PJLIB_SONAME := libpj.$(SHLIB_SUFFIX)
#export PJLIB_SHLIB := $(PJLIB_SONAME).$(PJ_VERSION_MAJOR)
export PJLIB_SONAME := libpj
export PJLIB_SHLIB := $(PJLIB_SONAME).$(SHLIB_SUFFIX)
endif

###############################################################################
# Gather all flags.
#
export _CFLAGS 	:= $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \
		   $(CFLAGS) $(CC_INC)../include
export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \
		   $(HOST_CXXFLAGS) $(CXXFLAGS)
export _LDFLAGS := $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \
		   $(APP_LDFLAGS) $(LDFLAGS) 


###############################################################################
# Defines for building PJLIB library
#
export PJLIB_SRCDIR = ../src/pj
export PJLIB_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
	activesock.o array.o config.o ctype.o errno.o ex
ndk linux arm下载地址,【ndk】直接使用ndk提供的arm-linux-androideabi-gcc编译android可执行程序... 1、背景经常使用linux交叉工具类的朋友都知道,在已安装交叉编译工具链后要交叉编译得到linux可执行文件只需要运行如下类似的命令(如编译hello.c生成hello可执行文件):arm-linux-gcc hello.c -o hellohello.c的代码非常简单,完整的代码如下:#include int main() {printf("hello,world!");return 0;}但是... 阅读详情

相关推荐

NDK交叉编译工具链使用教程

以上就是使用 NDK 中的交叉编译工具链,编译一个 C++ 文件的基本步骤。

usstmiracle的博客 2888

ndk-8d.tar.gz

nkd sdk ant and jdk is the neccesery tools in develop the android

交叉编译PJSIP

交叉编译PJSIP设置GCC环境configure编译并运行 设置GCC环境 configure mipsel-24kec-linux-uclibc是一个前缀名,它相当于从这个前缀里面寻找自己所需要的编译器。 例如我这里的gcc是mipsel-24kec-linux-uclibc-gcc,g++是mipsel-24kec-linux-uclibc-g++。 编译前运行./configure并设置编译环境 ./configure --host=mipsel-24kec-linux-uclibc

BeanGuohui的博客 1035

AIDE_3.2.180516破解版

最新的AIDE_3.2.180516破解版,开启全套教程,另附一个ndk_arm64.tar.gz 由于太大了就放了个bdy链接

PJSIP交叉编译

大家在交叉编译pjsip的过程中总是遇到各种各样的问题,今天我把自己交叉编译PJSIP的过程记录下来,供大家参考。

ware_soft的博客 4120

NDK历史版本下载方法

Android NDK 历史版本下载方法

jacke121的专栏 1万+

pjsipAndroid平台移植:新手教程(从零开始)

手把手教你从零开始在Android平台移植pjsip,涵盖环境搭建、配置编译到运行调试的完整流程,适合新手快速上手pjsip开发。

weixin_33481022的博客 389

pjsip在ARM架构Android设备移植完整示例

深入讲解pjsip在ARM架构Android设备上的完整移植过程,涵盖编译配置与关键问题解决,帮助开发者高效实现pjsip的移动端部署。

weixin_36012152的博客 956

pjsipAndroid NDK环境搭建手把手教程

手把手教你如何在Android NDK环境中成功配置和编译pjsip,涵盖常见问题与解决方案,让pjsip集成更高效稳定。

weixin_35459464的博客 484

pjsip移植到Android系统完整指南

详解将pjsip集成到Android平台的全过程,涵盖环境配置、交叉编译与代码适配关键步骤。通过实际操作解决pjsip在移动设备上的运行难题,帮助开发者快速实现VoIP功能。

weixin_28721743的博客 388

使用CMake集成pjsipAndroid项目图解说明

详细介绍如何通过CMake将pjsip高效集成到Android项目中,解决NDK开发中的常见问题,提升音视频通信功能的实现效率与跨平台兼容性。

weixin_42351520的博客 490

Android平台pjsip移植实战案例解析

深入解析在Android环境下移植pjsip的完整流程,涵盖环境搭建、配置优化与常见问题处理,帮助开发者高效集成pjsip实现音视频通信功能。

weixin_36431145的博客 386

交叉编译pjsip2.2.1android平台

1 设置NDK环境变量  export ANDROID_NDK_ROOT=/root/lib/android-ndk-r9d  2 配置android相关  编辑pjlib/include/pj/config_site.h文件内容如下:  #define PJ_CONFIG_ANDROID 1  #include    3 生成makefile  ./configure

zhaozhencn的专栏 1124

IM音视频通信开发(2)--点对点单聊实现

上一篇大体说明了服务器的搭建,这一篇就开始单对单的语音聊天说明。 就像上一篇中介绍的一样,客户端利用的是开源的pjsip客户端进行语音通信,pjsip中本身也提供了大量的demo让我们进行功能调试和使用,所以我们可以直接利用它本身的demo来修改进而达到我们客户端语音通信的目的。 另:在尝试过程中发现,pjsip客户端不注册服务器直接进行端对端拨打,在同一局域网下依旧是可以的,这边由于需要后期...

qq_32817359的博客 2528

交叉编译(NDK)

交叉编译是指在一种计算机体系结构上编译和构建应用程序,但是生成的可执行文件和是针对另一种不同的体系结构,比如等。GNU 工具链:比如编译ARM64架构可以使用工具,并可以使用工具来进行调试,一般用qemu来运行多架构的可执行文件然后使用进来远程调试Clang/LLVM 工具链:Clang/LLVM 工具链支持许多不同的架构和操作系统Android NDK:专门为 Android 平台提供的交叉编译工具集。使用编译工具链为Clang/LLVM。

csdn546229768的博客 1167

Android SDK Android NDK 官方下载地址

Android SDK 3.2 Windows http://dl.google.com/android/android-sdk_r12-windows.zip http://dl.google.com/android/installer_r12-windows.exe

victoryckl的专栏 1692

ndk版本的下载

https://dl.google.com/android/ndk/android-ndk-r8e-windows-x86.zip https://dl.google.com/android/ndk/android-ndk-r9d-linux-x86_64.tar.bz2 只需把相应的版本号改了就可直接下载eg:下载32位linux的ndk r9:https://dl.go

disadministrator的专栏 1066

NDK各版本下载

直接点击下载不了的话,可以用迅雷下载。

学习备忘录 6万+

开发者网站收藏

QThttp://qt-project.org/downloads

myxuan475的专栏 806
上一篇: 测试环境搭建-1:iOS开发错误及解决方法
下一篇: 交叉编译-2:跨平台交叉编译FFmpeg库(Android、IOS、S2L)
椰果奶茶加冰
博客等级 码龄12年 336粉丝 135原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值