编译安装mod_wsgi到make报错: Command failed with rc=65536 . make: ***

/usr/bin/ld: /usr/local/python3.12/lib/libpython3.12.a(string_parser.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC collect2: error: ld returned 1 exit status apxs:Error: Command failed with rc=65536 . make: *** [Makefile:31:src/server/mod_wsgi.la] 错误 1

遇到的这个报错是编译 mod_wsgi 时链接阶段的 PIC 编译标志不兼容问题,核心原因是:你系统中 /usr/local/python3.12 下的 Python 3.12 是通过静态库(libpython3.12.a)编译的,且编译时未启用 -fPIC 标志,而 mod_wsgi 作为 Apache 的动态共享模块(.so),链接时必须依赖启用了 PIC 编译的 Python 库(静态库 / 动态库均可,核心是带 -fPIC),静态库缺少该标志会直接导致链接器(ld)报错终止。

一、核心报错拆解

  1. relocation R_X86_64_32 against '.rodata.str1.1' can not be used when making a shared object:64 位系统中,构建动态共享模块时,所有参与链接的库文件必须支持位置无关代码(Position-Independent Code,PIC),否则无法完成地址重定位,这是 64 位系统编译动态模块的硬性要求;
  2. recompile with -fPIC:链接器明确提示解决方案 —— 重新编译 Python 并添加 -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bjrhlp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值