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

Rocky Linux下pip安装rpy2报错:无法找到libffi.a

Rocky Linux下pip安装rpy2因libffi静态库缺失的解决办法

问题背景

已在Rocky Linux系统成功安装R,尝试通过pip install rpy2实现Python调用R时安装失败,核心问题是编译过程中强制寻找不存在的libffi静态库libffi.a,且指定的libffi路径/local/build/libffi/_install/lib64无效,系统仅安装了libffi动态库libffi.so。

报错信息

pip直接安装时的报错:

creating build/temp.linux-x86_64-cpython-310/rpy2/rinterface_lib
  /external/gcc-11.2.0/bin/gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I~/devel/jupyter_projects/.venv/include -I/external/python/python-3.10.13/include/python3.10 -c rpy2/rinterface_lib/_bufferprotocol.c -o build/temp.linux-x86_64-cpython-310/rpy2/rinterface_lib/_bufferprotocol.o
  /external/gcc-11.2.0/bin/gcc -shared -L/local/build/libffi/_install/lib64 -l:libffi.a build/temp.linux-x86_64-cpython-310/rpy2/rinterface_lib/_bufferprotocol.o -L/external/python/python-3.10.13/lib -o build/lib.linux-x86_64-cpython-310/rpy2/rinterface_lib/_bufferprotocol.cpython-310-x86_64-linux-gnu.so
/usr/bin/ld: cannot find -l:libffi.a
collect2: error: ld returned 1 exit status

本地编译rpy2时的报错:

building '_rinterface_cffi_api' extension
  /external/gcc-11.2.0/bin/gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DRPY2_RLEN_LONG=True -DR_INTERFACE_PTRS=True -Irpy2/rinterface_lib/ -I/local/.venv/include -I/external/python/python-3.10.13/include/python3.10 -c _rinterface_cffi_api.c -o ./_rinterface_cffi_api.o -std=c99
  /external/gcc-11.2.0/bin/gcc -shared -L/local/build/libffi/_install/lib64 -l:libffi.a ./_rinterface_cffi_api.o -L/usr/lib64/R/lib -L/external/python/python-3.10.13/lib -lR -ltre -lpcre2-8 -ldeflate -llzma -lbz2 -lz -ltirpc -lrt -ldl -lm -licuuc -licui18n -lflexiblas -o ./_rinterface_cffi_api.cpython-310-x86_64-linux-gnu.so -Wl,--export-dynamic -fopenmp -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,-rpath,/usr/lib64/R/lib64
  /usr/bin/ld: cannot find -l:libffi.a
  collect2: error: ld returned 1 exit status
  rpy2/_rinterface_cffi_build.py:301: UserWarning: LinkError: command '/external/gcc-11.2.0/bin/gcc' failed with exit code 1

解决方法

  • 方法1:安装libffi静态库开发包
    Rocky Linux中,libffi的静态库包含在libffi-devel包内,执行以下命令安装:

    sudo dnf install libffi-devel
    

    安装完成后重新运行pip install rpy2即可。

  • 方法2:指定动态库路径并强制链接动态库
    若无法安装静态库,可通过环境变量指定正确的libffi动态库路径:

    1. 先定位系统中libffi.so的位置:
      find /usr -name libffi.so
      
    2. 设置环境变量并执行安装,将下面的/usr/lib64替换为实际找到的路径:
      export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH
      export CFLAGS="-L/usr/lib64 -lffi"
      pip install rpy2
      
  • 方法3:修改本地编译的链接参数
    针对本地编译场景,修改rpy2的编译配置文件:

    1. 打开rpy2/_rinterface_cffi_build.py文件
    2. 找到包含-l:libffi.a的行,替换为-lffi(链接动态库)
    3. 将-L/local/build/libffi/_install/lib64替换为实际的libffi库路径(如-L/usr/lib64)
    4. 重新执行本地编译安装流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:07:32