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

使用setuptools构建Python C++扩展时遇cannot find -lglfw错误求助

解决ld找不到glfw库的问题

你的问题根源是library_dirs的路径没指向实际存放glfw库文件的目录——你编译glfw后,.so和.a文件生成在lib/glfw/src下,但setup.py里只写了lib/glfw,链接器自然找不到库文件。

直接修改setup.py的相关配置即可:

from setuptools import setup, Extension, find_packages


module1 = Extension('nerveblox',
       sources = ['main.cpp', 'src/nerveblox_VM.cpp'],
       include_dirs=["include", "lib/glfw/include"],
       # 修正library_dirs为实际库文件所在目录
       library_dirs=["lib/glfw/src"],
       libraries=['glfw'],
       # 若用动态库,添加runtime_library_dirs确保运行时能找到库
       runtime_library_dirs=["lib/glfw/src"],
       # 补上glfw依赖的系统库(静态链接必须加,动态链接也可能需要)
       extra_link_args=["-lm", "-lGL", "-lGLU"]
)


setup (
       name = 'Nerveblox_python_test',
       version = '1.0',
       description = 'This is a demo package',

       ext_modules = [module1],
       install_requires=[
        'importlib-metadata; python_version == "3.8"',
       ],
)

额外注意两个细节:

  • 如果glfw编译出的动态库带版本号(比如libglfw.so.3),链接器可能识别不了-lglfw,可以在lib/glfw/src目录下创建软链接:ln -s libglfw.so.3 libglfw.so,或者直接在extra_link_args里指定完整库路径
  • 纯C++用cmake编译正常是因为cmake自动处理了库路径和依赖,而setuptools需要手动指定所有路径细节

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:45:49