Compressai报错undefined symbol: __cxa_call_terminate解决方法

部署运行你感兴趣的模型镜像

Debian 12下安装Compressai报错undefined symbol: __cxa_call_terminate解决方法

1. 问题

在Debian 12下安装完Compressai 1.2.6后运行python文件时报错:

File "/opt/anaconda3/envs/mar/lib/python3.8/site-packages/compressai/__init__.py", line 30, in <module>
    from compressai import (
  File "/opt/anaconda3/envs/mar/lib/python3.8/site-packages/compressai/entropy_models/__init__.py", line 30, in <module>
    from .entropy_models import (
  File "/opt/anaconda3/envs/mar/lib/python3.8/site-packages/compressai/entropy_models/entropy_models.py", line 42, in <module>
    from compressai._CXX import pmf_to_quantized_cdf as _pmf_to_quantized_cdf
ImportError: /opt/anaconda3/envs/mar/lib/python3.8/site-packages/compressai/_CXX.cpython-38-x86_64-linux-gnu.so: undefined symbol: __cxa_call_terminate

2. 解决方法

该问题是由于gcc/g++的版本过高导致的,Debian 12下默认安装的gcc/g++版本为14,将gcc/g++的版本降到9即可正常运行,这里测试发现安装9.3.0可以正常使用。

1. 下载deb包

能够下载Debian下gcc/g++ 9的源比较难找(笔者用的是中科大的源,无法直接通过sudo apt-get install gcc-9 -y 安装),这里推荐直接在Debian的软件包官网上载在deb文件本地安装。
进入Debian的gcc 9软件包官网,下滑到页面底端,可以看到:
gcc-9版本
点击amd64即可跳转到下载页面:
gcc-9下载页面
选择图中标有红线的链接下载得到deb安装包。

2. 安装deb包

使用sudo dpkg -i gcc-9_9.3.0-22_amd64.deb安装下好的deb包,发现安装时报错:

dpkg: dependency problems prevent configuration of gcc-9:
 gcc-9 depends on cpp-9 (= 9.3.0-22); however:
  Package cpp-9 is not installed.
 gcc-9 depends on gcc-9-base (= 9.3.0-22); however:
  Package gcc-9-base is not installed.
 gcc-9 depends on libgcc-9-dev (= 9.3.0-22); however:
  Package libgcc-9-dev is not installed.

这是因为缺少相应的依赖,这3个包同样可以在Debian的gcc-9软件包官网上下载得到。由于这3个包之间还存在依赖关系,所以需要注意安装顺序。先安装 gcc-9-base,然后是 cpp-9,接着是 libgcc-9-dev,最后安装 gcc-9

如果在安装gcc-9时报错:

dpkg: dependency problems prevent configuration of gcc-9:
 gcc-9 depends on libgcc-9-dev (= 9.3.0-22); however:
  Package libgcc-9-dev:amd64 is not configured yet.

这是由于 libgcc-9-dev 包尚未正确配置,导致 gcc-9 无法完成安装。运行

sudo apt-get install -f

类似地,通过上面的方法在Debian的g++ 9软件包官网上完成g++ 9的下载与安装。

3. 配置gcc/g++ 9为系统gcc/g++

运行

ls /usr/bin/gcc*
ls /usr/bin/g++*

可以看到系统中现在有哪些已安装的gcc/g++。如果出现/usr/bin/gcc-9/usr/bin/g++-9说明安装成功。
运行

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 30 --slave /usr/bin/g++ g++ /usr/bin/g++-9

gcc-9g++-9 注册到 update-alternatives 系统中,这里的数字30表示优先级,数字越大,优先级越高。
执行以下命令:

sudo update-alternatives --config gcc

出现
gcc版本选择
输入对应的编号就能选择相应的gcc作为默认版本,这里就是键入3。
执行gcc --versiong++ --version查看系统当前的默认gcc/g++版本,显示9.3.0则降级成功。

4. 重装Compressai

pip uninstall compressai
pip install compressai

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Undefined symbols for architecture arm64: "std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from: std::__1::ctype<char> const& std::__1::use_facet[abi:ne180100]<std::__1::ctype<char>>(std::__1::locale const&) in CPP-ff0177.o "std::__1::ios_base::getloc() const", referenced from: std::__1::basic_ios<char, std::__1::char_traits<char>>::widen[abi:ne180100](char) const in CPP-ff0177.o "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::__init(unsigned long, char)", referenced from: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_string[abi:ne180100](unsigned long, char) in CPP-ff0177.o "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_string()", referenced from: std::__1::ostreambuf_iterator<char, std::__1::char_traits<char>> std::__1::__pad_and_output[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char>>, char const*, char const*, char const*, std::__1::ios_base&, char) in CPP-ff0177.o std::__1::ostreambuf_iterator<char, std::__1::char_traits<char>> std::__1::__pad_and_output[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char>>, char const*, char const*, char const*, std::__1::ios_base&, char) in CPP-ff0177.o "std::__1::basic_istream<char, std::__1::char_traits<char>>::operator>>(int&)", referenced from: _main in CPP-ff0177.o _main in CPP-ff0177.o _main in CPP-ff0177.o _main in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::put(char)", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::endl[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&) in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::flush()", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::endl[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&) in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char>>&)", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::sentry::~sentry()", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::operator<<(double)", referenced from: _main in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::operator<<(int)", referenced from: _main in CPP-ff0177.o "std::__1::cin", referenced from: _main in CPP-ff0177.o "std::__1::cout", referenced from: _main in CPP-ff0177.o "std::__1::ctype<char>::id", referenced from: std::__1::ctype<char> const& std::__1::use_facet[abi:ne180100]<std::__1::ctype<char>>(std::__1::locale const&) in CPP-ff0177.o "std::__1::locale::~locale()", referenced from: std::__1::basic_ios<char, std::__1::char_traits<char>>::widen[abi:ne180100](char) const in CPP-ff0177.o std::__1::basic_ios<char, std::__1::char_traits<char>>::widen[abi:ne180100](char) const in CPP-ff0177.o "std::__1::ios_base::__set_badbit_and_consider_rethrow()", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o "std::__1::ios_base::clear(unsigned int)", referenced from: std::__1::ios_base::setstate[abi:ne180100](unsigned int) in CPP-ff0177.o "std::terminate()", referenced from: ___clang_call_terminate in CPP-ff0177.o "___cxa_begin_catch", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o ___clang_call_terminate in CPP-ff0177.o "___cxa_call_unexpected", referenced from: std::__1::char_traits<char>::length[abi:ne180100](char const*) in CPP-ff0177.o std::__1::ostreambuf_iterator<char, std::__1::char_traits<char>>::ostreambuf_iterator[abi:ne180100](std::__1::basic_ostream<char, std::__1::char_traits<char>>&) in CPP-ff0177.o "___cxa_end_catch", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o "___gxx_personality_v0", referenced from: /private/var/folders/nt/_wsd9hj903q7pgvy73frnx4c0000gn/T/CPP-ff0177.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) v_fengte@MacBook-Pro ddd %
07-01
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值