使用go-python3库时出现大量未定义引用问题求助
解决Go嵌入Python3.8时链接
undefined reference错误 问题核心
编译时出现undefined reference to PyBool_Type等错误,本质是链接器未正确关联Python3.8的库文件,CGO未获取到正确的链接参数。
解决步骤
检查Python3.8的pkg-config配置文件
打开/usr/lib/x86_64-linux-gnu/pkgconfig/python-3.8.pc,确认Libs字段包含-lpython3.8:Libs: -L${libdir} -lpython3.8若缺失该参数,补充后保存。
编译时显式指定CGO参数
替换原编译命令,直接指定使用python-3.8的pkg-config配置,确保CGO获取正确的编译和链接参数:protoc -Isrc/proto --go_opt=module=grpc-golang --go_out=. --go-grpc_opt=module=grpc-golang --go-grpc_out=. src/proto/*.proto CGO_CFLAGS="$(pkg-config --cflags python-3.8)" CGO_LDFLAGS="$(pkg-config --libs python-3.8)" go build -o dest/server ./src/server && PYTHONPATH=.清理Go编译缓存
清除旧的编译缓存和模块缓存,避免残留的旧链接信息干扰:go clean -cache go clean -modcache验证Python3.8开发包完整性
若上述步骤无效,检查是否安装了Python3.8的开发包:sudo apt-get install python3.8-dev安装完成后重新运行编译命令。
内容的提问来源于stack exchange,提问作者Zong Xun
相关产品推荐
相关产品推荐

