Ubuntu16.04+Python3.6环境下安装Perl Inline::Python模块报错求助
解决Inline::Python安装时的LTO版本冲突问题
这个错误本质是系统GCC的LTO版本和Anaconda Python编译时用的GCC LTO版本不匹配导致的——Anaconda自带的工具链通常比Ubuntu 16.04默认的更新,你的Python 3.6是用带LTO 6.0的GCC编译的,但系统的GCC 5.4.0只支持LTO 4.1,链接时就出现了版本冲突。
下面是几个可行的解决办法,按优先级从高到低推荐:
方法一:禁用LTO编译Inline::Python
最简单的办法就是在安装时告诉Perl的编译系统不要使用LTO,直接绕过版本冲突:
PERL_MM_OPT="CCFLAGS=-fno-lto" cpanm Inline::Python
如果你习惯用cpan命令行工具,也可以这么操作:
cpan > o conf makepl_arg CCFLAGS=-fno-lto > install Inline::Python > o conf makepl_arg '' # 安装完记得改回默认配置,避免影响其他Perl模块编译
方法二:用Anaconda的GCC来编译
既然Anaconda的Python是用它自己的GCC编译的,那我们直接用Anaconda的工具链来构建Inline::Python,确保版本完全匹配:
- 先激活你的Anaconda环境:
source activate your_env_name # 替换成你实际的conda环境名,比如base
- 确认当前使用的是Anaconda自带的GCC:
which gcc # 输出应该是类似 /home/your_user/anaconda3/bin/gcc 的路径,而不是系统默认的/usr/bin/gcc
- 然后正常安装Inline::Python即可:
cpanm Inline::Python
如果你的环境里没有cpanm,先执行这条命令安装:curl -L https://cpanmin.us | perl - --sudo App::cpanminus
方法三:升级系统GCC(谨慎操作)
Ubuntu 16.04默认的GCC 5.4不支持LTO 6.0,你可以尝试升级到更高版本的GCC(比如GCC 7),但这可能影响系统其他依赖,操作前请备份重要数据:
- 添加Ubuntu工具链的PPA源:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update
- 安装GCC 7:
sudo apt install gcc-7 g++-7
- 设置GCC 7为系统默认版本:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7
- 验证版本是否切换成功:
gcc --version # 应该显示7.x.x的版本号
完成后再尝试安装Inline::Python即可。
内容的提问来源于stack exchange,提问作者pushkar rawat
相关产品推荐
相关产品推荐

