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

QT框架中使用NURBS库出现R_X86_64_32S重定位错误求助

解决QT中NURBS库编译重定位错误的方案

错误核心原因

当前项目默认生成PIE(位置独立可执行文件),但你使用的libnurbs++.a静态库是用非PIE编译选项构建的,二者重定位格式不兼容,导致链接失败。

具体解决方法

方法1:修改QT项目.pro文件,禁用PIE编译

在项目的.pro文件中添加以下编译链接选项,强制关闭PIE模式,这是最直接的解决方案,无需重新编译NURBS库:

QMAKE_CXXFLAGS += -no-pie
QMAKE_LFLAGS += -no-pie

添加后重新执行qmake,再编译项目即可。

方法2:重新编译NURBS库,添加PIE支持

如果需要保留PIE模式,需重新编译nurbs++库,编译时加入PIE相关选项:

  1. 进入nurbs++库的源码目录
  2. 执行配置命令时指定编译参数:
    ./configure CXXFLAGS="-fPIE" LDFLAGS="-fPIE"
    
  3. 依次执行make和make install重新安装库,替换原有静态库后再编译QT项目。

方法3:确认QT默认编译配置

部分Linux发行版的QT环境默认开启PIE,可通过以下命令查看默认链接参数:

qmake -query QMAKE_LFLAGS

如果输出包含-pie,说明默认启用PIE,此时用方法1的-no-pie覆盖即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 16:39:20