环境:CentOS 7.6_x64

Python版本 :3.9.12

pjsip版本:2.13

一、背景描述

pjsip地址:https://www.pjsip.org/

GitHub地址:https://github.com/pjsip/pjproject

pjsip文档地址:https://docs.pjsip.org/en/latest/

最新版本:2.13

pjsip是一个功能强大的sip协议栈和媒体处理库,MicroSIP软电话就是基于pjsip实现的,功能很强大。

其中的pjsua可以实现软电话的基础功能,在日常开发中可以作为uas或uac辅助开发,但pjsua默认绑定的python版本是python 2.4,使用起来有诸多限制,希望可以使用python3调用pjsua库。

之前写过在windows10环境下编译python3版本的pjsua:

windos10环境下编译python3版pjsua库

这里记录下centos7环境编译pjsua的过程及注意事项,并提供预编译二进制文件下载,可通过如下途径获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20230608 获取。

这里使用 Python 3.9.12 版本,具体编译过程可参考这篇文章:

CentOS7环境源码安装python3.9

二、具体实现

1、替换文件

官方给的代码不支持python3,需要使用第三方代码:

https://github.com/mgwilliams/python3-pjsip.git

下载之后,替换该目录 pjsip-apps/src/python,或使用软链接:

cp python3-pjsip.tar.gz pjproject-2.13/pjsip-apps/src/
cd pjproject-2.13/pjsip-apps/src/
mv python python_bak
tar zxvf python3-pjsip.tar.gz
ln python3-pjsip -s python

2、编译pjsip

编译pjsip时需要添加 -fPIC 选项

目录:pjproject-2.13

编译pjsip命令:

./configure CFLAGS="$CFKAGS -fPIC"
make dep && make

3、编译python3版本pjsua

目录:pjproject-2.13/pjsip-apps/src/python

编译脚本:

vim doBulild.sh

执行如下命令:

chmod a+x doBuild.sh

./doBulild.sh

ls build/lib.linux-x86_64-cpython-39/

编译过程视频获取途径:

关注微信公众号(聊聊博文,文末可扫码)后回复 2023060801 获取。

三、运行效果

1、环境准备

python3.9的env.sh文件,位置:/root/py39env/env.sh

内容:

#! /bin/bash

pydir=/root/py39env
export CFLAGS="-I$pydir/include"
export LDFLAGS="-L$pydir/lib"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$pydir/lib

执行如下命令:

source /root/py39env/env.sh

2、导入测试

导入测试成功:

3、注册测试

示例代码路径:

pjproject-2.13/pjsip-apps/src/python/samples

示例文件:registration.py

修改端口及注册信息:

完整源码获取途径:

关注微信公众号(聊聊博文,文末可扫码)后回复 20230608 获取。

注册测试:

四、资源下载

本文涉及源码和文件,可以从如下途径获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20230608 获取。

CentOS7环境编译python3.9版本pjsua的更多相关文章

  1. Windows7 WIN 7 64位 环境编译6sv2.1版本的大气传输模型

    从来没见过Fortran...这次为了添加国产卫星光谱响应的支持,只能从零开始肯了. 6S模型主页:http://6s.ltdri.org/index.html. 下载最新的2015年更新的6SV2. ...

  2. Windows环境下python3.7版本怎么安装pygame

    访问此网址 下载对应Python版本的pygame,如下图: 下载完成后,会有一个whl后缀的文件. 将此文件复制到Python根目录下的scripts目录下,打开cmd, 切换到scripts目录下 ...

  3. 【Python+Selenium】猪猪练习成功版:csv文件的输入和输出(运行环境:python3.5版本)

    自己实践成功的从csv文件中读取用户名密码并实际登录系统后判断是否登录成功,并将已经运行的用户名密码及运行结果输出到一个新的csv文件中~ # coding=utf-8 from selenium i ...

  4. Centos7环境下安装python3.6.4 并与python2共存

    最近安装了新系统centos7,本身自带python2.7,但是由于需要使用python3 来运行一些应用,所以想到在centos环境下安装python3,并保证其和python2 可以共存. 步骤如 ...

  5. CentOS7.6编译安装Python-3.7.4

    安装步骤 1. 下载安装包.wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz<说明>如果报SSL/TSL错误,则加 ...

  6. Centos7 环境下 Python2.7 换成 Python3.7 运行 scrapy 应用所遇到的问题记录

    参考网友的安装过程 Linux系统Centos安装Python3.7 设置Python默认为Python3.7 mv /usr/bin/python /usr/bin/python.bak ln -s ...

  7. Centos7之LNMP环境编译安装

    Centos7之LNMP环境编译安装 一.系统环境准备 注:安装时间过长,只做参考!!!1.系统信息 [root@localhost ~]# uname -r 3.10.0-957.el7.x86_6 ...

  8. 在OpenEuler22.09(也适用于CentOS7+)编译安装Python3.9,并于原Python共存-指南

    指南使用操作系统:OpenEuler 22.09(网络安装,最小安装,使用默认源) 指南使用系统自带Python版本:3.10(高版本,这不是3.1喔) 1. 安装基本的编译环境 yum -y ins ...

  9. C++版本 ORM 访问数据库之ODB 的Window环境编译(一)

    先简单说说我为什么要编译一个ORM访问数据库的版本, 以前在做C#访问数据库时候, 直接以orm方式访问数据库, 代码写起来简单,  不用写各种复杂的sql语句, 直接有orm框架生成, 后来转到C+ ...

  10. centos7.6环境编译安装php-7.2.24修复最新 CVE-2019-11043 漏洞

    先编译安装php-7.2.24,然后编译安装扩展 主版本地址地址:https://www.php.net/distributions/php-7.2.24.tar.gz # 编译 php-7.2.24 ...

随机推荐

  1. .NET生成MongoDB中的主键ObjectId

    前言 因为很多场景下我们需要在创建MongoDB数据的时候提前生成好主键为了返回或者通过主键查询创建的业务,像EF中我们可以生成Guid来,本来想着要不要实现一套MongoDB中ObjectId的,结 ...

  2. 全面了解 Redis 高级特性,实现高性能、高可靠的数据存储和处理

    目录 高性能.高可用.高可扩展性的原理 持久化 RDB持久化 AOF持久化 持久化的配置 RDB配置 AOF配置 持久化的恢复 RDB的恢复 AOF的恢复 RDB和AOF的选择 持久化对性能的影响 数 ...

  3. Linux无root权限conda初始化

    pre { overflow-y: auto; max-height: 400px } img { max-width: 500px; max-height: 300px } 1. 给anaconda ...

  4. Mybatis Plus根据某字段特定值排序

    需求 背景:一个审核流程.审核人等级分为市级和省级,管理员升级字段adminlevel,字段含义:1省级,2市级.审核字段audit为int字段,字段含义:1待市级审核,2待省级审核,3通过审核. 需 ...

  5. [Linux]CentOS7搭建/配置:YUM仓库/源[本地源/Web源(Apache HTTP(D))/自建源仓库]

    若想搞懂整个配置过程和原理,就按照章节(1 / 2)一步一步地来. 若想直接一步到位,不想花过多时间,尽快配好,就直接看附件章节. 什么是yum源? Yum(全称为 Yellow dog Update ...

  6. [数据结构]二叉搜索树(BST) VS 平衡二叉排序树(AVL) VS B树(平衡多路搜索树) VS B+树 VS 红黑树(平衡二叉B树)

    1 二叉排序树/二叉查找树/Binary Sort Tree 1种对排序和查找都很有用的特殊二叉树 叉排序树的弊端的解决方案:平衡二叉树 二叉排序树必须满足的3条性质(或是具有如下特征的二叉树) 若它 ...

  7. Simulation-计算统计-随机数生成

    library('ggplot2') library('dplyr') Lecture 6 Methods for generating random numbers Goal: Use U(0, 1 ...

  8. linux下防火墙与SELinux状态与关闭

    linux下防火墙与SELinux状态与关闭 在使用ftp命令以及wget命令测试两台linux机器之间ftp下载是否正常,虽然关闭了防火墙,但是一直还是提示以下错误 然来还需要将SELinux 设置 ...

  9. create-react-app 构建的项目使用代理 proxy 解决跨域请求

    1. 正常运行 npm run eject 暴露项目的配置文件 (前三个步骤可省略,最好的是按照第四步操作) 在config/webpackDevServer.config文件下,大概在104行 1 ...

  10. 【opencv-c++】4.1-4.2 图像和大型数组类型

    4.1-4.2 图像和大型数组类型 动态可变的存储 我们将进入大型数组类型的世界,它们之中最主要的当属c v::Mat,这个结构可以视为是OpenCV所有C++实现的核心,OpenCV所有主要函数都或 ...