You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译pjsua2后Python3.12导入失败:undefined symbol: pj_log_5

解决pjsua2 Python3.12导入时的pj_log_5未定义符号错误

问题本质

错误提示的undefined symbol: pj_log_5,是因为pjproject自带的speex库编译时未正确链接到pjproject核心库,导致运行时找不到日志函数的符号。

修复操作

1. 重新配置编译pjproject

先清理之前的编译残留,再用指定参数重新配置编译:

export CFLAGS="$CFLAGS -fPIC"
make clean && make distclean
./configure --enable-shared --disable-static --with-speex=builtin
make dep && make
sudo make install
  • --enable-shared:生成共享库,避免静态库的链接冲突
  • --disable-static:禁用静态库,简化依赖关系
  • --with-speex=builtin:强制使用pjproject自带的speex源码编译,自动关联pjproject核心库,从根源避免符号缺失问题

2. 重新编译Python绑定

进入Python绑定目录,清理旧编译文件后重新编译安装:

cd pjsip-apps/src/swig/python
make clean
make
sudo make install

3. 检查依赖是否正常

编译完成后,验证speex库是否正确链接了pjproject核心库:

ldd /pjproject-2.14.1/third_party/lib/libspeex.so.2

如果输出中能看到libpj.so、libpjlib-util.so这类pjproject的库条目,说明链接正常。

4. 确保Python能加载到库

如果依旧导入失败,可临时设置环境变量让系统找到pjproject的库:

export LD_LIBRARY_PATH=/pjproject-2.14.1/lib:/pjproject-2.14.1/third_party/lib:$LD_LIBRARY_PATH

若要永久生效,将上述两个路径写入/etc/ld.so.conf.d/pjproject.conf文件,再执行sudo ldconfig刷新缓存即可。

内容的提问来源于stack exchange,提问作者Jeff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:12:19