我使用Microtek工具链生成一个可执行的二进制文件,其中包含可重定位的代码(与pc相关)和来自固定地址的数据(绝对数据)。现在,这个工具链不能在64位Windows 7上运行。其想法是将68000的Microtek工具链替换为GNU工具链(GCC 4.8.0)。
但我在gcc编译器上找不到相同的选项:
带有:“-Mcp”的Microtec编译器"MCC68K“:指示编译器对所有代码引用使用PC相对寻址。"-Mda":指示编译器对所有数据引用使用绝对寻址。
Gcc (m68k-精灵-gcc)与:-mpcrel
无法使用没有可重定位数据的gcc可重定位代码作为Microteck编译器进行生成。使用"-mpcrel",一切都是可重定位的(代码和数据)。
你有什么想法吗?
对不起,我的英语不好。
谢谢。
发布于 2014-04-11 21:59:44
据我所知,没有办法使用GNU m68k工具链实现相同的结果。
对于代码和数据,
-mpcrel
将使用pc相对地址生成完全位置独立的代码,从而导致程序/数据大小有限(pc相对偏移量不能超过16 bits).-fpic
,-fPIC
将使用可重定位的二进制文件生成与位置无关的代码,但将需要执行就地重定位的特殊加载程序
发布于 2014-04-11 19:39:24
来自gcc docs
-fpic生成适合在共享库中使用的位置无关代码(PIC),...
-fPIC如果目标机器支持,则发出与位置无关的代码,适用于动态链接,并避免对全局偏移表大小的任何限制。
还可以尝试search
https://stackoverflow.com/questions/23011162
复制相似问题