Ubuntu16.04下Anaconda环境安装pysptk遇cannot find -lgcc_s错误求助
我之前在类似的环境里碰到过一模一样的问题,这个/usr/bin/ld: cannot find -lgcc_s错误本质是链接器找不到libgcc_s.so库,大概率是Anaconda自带的编译工具链和系统gcc的库路径没对齐导致的,试试下面几个方案,按优先级来:
方案1:直接用conda安装预编译包(最省心)
pip安装需要本地编译,容易踩环境兼容的坑,conda-forge提供了预编译好的pysptk包,直接安装就行:
conda activate your_env_name # 替换成你的Anaconda环境名称 conda install -c conda-forge pysptk
这个方法跳过了本地编译环节,基本能避开链接错误和NumPy API警告的问题。
方案2:强制pip使用系统gcc编译
如果必须用pip安装,先确认你的Anaconda环境是不是在用自带的gcc(这通常是冲突根源):
conda activate your_env_name which gcc
如果输出是Anaconda路径下的gcc(比如~/anaconda3/envs/your_env/bin/gcc),那我们强制让pip调用系统的gcc来编译:
CC=/usr/bin/gcc CXX=/usr/bin/g++ pip install pysptk
或者先设置环境变量再安装:
conda activate your_env_name export CC=/usr/bin/gcc export CXX=/usr/bin/g++ pip install pysptk
方案3:手动指定libgcc_s.so的路径
如果上面的方法不行,先找到系统中libgcc_s.so的位置:
find /usr -name libgcc_s.so
通常会输出类似/usr/lib/x86_64-linux-gnu/libgcc_s.so或者/usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.so的路径,然后在pip安装时手动指定这个库路径:
pip install pysptk --global-option=build_ext --global-option="-L/usr/lib/x86_64-linux-gnu/"
记得把上面的-L后面的路径替换成你实际找到的路径。
关于NumPy API弃用警告
这个警告是因为pysptk依赖的旧版NumPy接口被标记为弃用,但只要安装成功,一般不会影响功能使用。如果你的环境允许,可以尝试升级NumPy到兼容的版本(但注意Python3.6的NumPy最高只能到1.19.x版本),或者忽略这个警告即可。
内容的提问来源于stack exchange,提问作者Luke

