M1 Mac安装官方Python3.9编译.so库提示找不到-lpython3.9错误
M1 Mac编译Python C扩展找不到libpython3.9的解决方法
- 移除不必要的双架构编译参数
你当前的编译命令同时指定了-arch arm64和-arch x86_64两个架构,M1芯片设备默认运行arm64架构程序,从python.org安装的Python如果是arm64版本,不会自带x86_64架构的libpython3.9库。如果不需要兼容Intel架构设备,直接删除编译参数中的-arch x86_64即可。 - 显式指定Python库路径
你可以在执行编译前设置环境变量,把Python 3.9的库路径添加到链接器搜索路径中:
export LIBRARY_PATH=/Library/Frameworks/Python.framework/Versions/3.9/lib:$LIBRARY_PATH
再运行你的编译脚本即可。如果是在cffi的构建脚本中配置,也可以直接给set_source方法添加library_dirs参数,传入上述路径。
- 移除显式链接libpython的参数
Mac系统下编译Python扩展时,已经带了-undefined dynamic_lookup参数的前提下,不需要显式链接libpython库,链接阶段缺失的Python符号会在程序运行时自动从Python解释器进程中加载。你可以直接删除编译命令中的-lpython3.9参数,即可规避找不到库的报错。
内容的提问来源于stack exchange,提问作者jamesthoo
相关产品推荐
相关产品推荐

