Relocation R_X86_64_32S against `.rodata#39; ... While compiling on 64-bit platform(针对“.rodata重定位 R_X86_64_32S ...在 64 位平台上编译时)
问题描述
所以我一直在编写 32 位代码,昨天我需要构建一个 dll,但我遇到了一些问题.无论如何,我在这里解决了它们.p>
不幸的是,即使我认为一切正常,但当我将程序和 makefile 移到其他运行 64 位的计算机上时发现情况并非如此,你可以猜到发生了什么......
所以我的问题与搬迁有关,因为 64 位
这是我的makefile
我尝试在 CFLAGS、CPPFLAGS 甚至 LDFLAGS 中添加 -fPIC.我也尝试在 -shared 标志之前和之后添加 -fPIC.
但我会得到与以前相同的错误.
如果我使用 CFLAGS = -fPIC,我会遇到类似的错误:
我已经阅读了所有与我的问题非常相似的主题,但我一直无法弄清楚.
解决方案是用-fPIC
编译所有东西,用-shared
链接共享对象.
为基于 make 的项目添加 -fPIC
到 CFLAGS
或 CXXFLAGS
.
So I've been coding something on 32-bit and yesterday I needed to build a dll and I had a couple of problems with that. Anyway I solved them here.
Unfortunately even if I thought that everything was working after all I found that wasn't the case when I moved my program and makefile on other computer what runs on 64bit, as you can guess what happened...
So my problem is related to relocation because of 64bit
and here is my makefile
I've tried to add -fPIC in CFLAGS, CPPFLAGS and even LDFLAGS. I've also tried add -fPIC before and after -shared flag.
But I'll just get a same error as previously.
If I use CFLAGS = -fPIC I'll get a bit same kind of error which is:
I've read about all the topics what are even remotely similar with my problem but I've been unable to figure this out.
The solution was to compile everything with -fPIC
, and link shared objects with -shared
.
Add -fPIC
to CFLAGS
or CXXFLAGS
for make-based projects.
这篇关于针对“.rodata"重定位 R_X86_64_32S ...在 64 位平台上编译时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!