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

Ubuntu20编译Blender Python模块时libpng.a报-fPIC链接错误如何解决

问题修复方案

错误原因

第一个链接错误是系统预装的静态库libpng.a编译时未添加-fPIC(位置无关代码)参数,无法被链接到动态加载的Python模块bpy中。直接将-fPIC加在make命令后是错误用法,make会把-fPIC拆成-f PIC识别为要找名为PIC的makefile,因此会报找不到规则的错误。

方案1:优先推荐,无需手动编译libpng

  • 安装系统动态libpng开发包,非root用户执行时前面加sudo:
    apt install libpng-dev
  • 进入Blender的构建目录,清理之前的构建缓存:
    make clean
  • 重新配置CMake,添加编译器PIC参数,指定优先使用动态libpng:
cmake .. \
  -DWITH_PYTHON_MODULE=ON \
  -DCMAKE_C_FLAGS="-fPIC" \
  -DCMAKE_CXX_FLAGS="-fPIC" \
  -DPNG_LIBRARY=/usr/lib/x86_64-linux-gnu/libpng.so
  • 重新编译bpy:
    make bpy -j$(nproc)

方案2:手动编译带PIC的libpng(方案1失效时使用)

  • 安装libpng编译依赖,非root用户执行时前面加sudo:
    apt install build-essential zlib1g-dev
  • 下载Ubuntu 20对应版本的libpng源码:
    apt source libpng16-16
  • 进入解压后的libpng源码目录,执行配置开启PIC支持:
cd libpng1.6.37*
./configure --enable-static --with-pic=yes --prefix=/usr/local/libpng-fpic
  • 编译安装,非root用户执行时前面加sudo:
    make -j$(nproc) && make install
  • 回到Blender构建目录,重新配置CMake指定使用自定义编译的libpng:
cmake .. \
  -DWITH_PYTHON_MODULE=ON \
  -DCMAKE_C_FLAGS="-fPIC" \
  -DCMAKE_CXX_FLAGS="-fPIC" \
  -DPNG_ROOT=/usr/local/libpng-fpic
  • 重新编译bpy:
    make bpy -j$(nproc)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:45:07