Gcc 在链接处的覆盖部分中复制库

Gcc 在链接处的覆盖部分中复制库,gcc,linker,gnu,ld,Gcc,Linker,Gnu,Ld,在一个带有GNU工具链的嵌入式系统中,当代码所在的闪存不可用时,我希望使用link的覆盖部分从RAM执行代码 我的问题是,当RAM中覆盖层中的C函数使用库中的函数时,例如:div/mod/。。。来自libgcc。libgcc链接在flash的主代码部分,该部分正忙 有没有办法防止交叉引用以及如何复制库代码?在这样的RAM覆盖层和闪存之间 干杯 这是很深的巫毒。这是什么样的嵌入式系统?您不能简单地使用静态二进制文件并手动将其复制到RAM中?你似乎在问的是,当然,不可能:不,你不能阻止flash中的

在一个带有GNU工具链的嵌入式系统中,当代码所在的闪存不可用时,我希望使用link的覆盖部分从RAM执行代码

我的问题是,当RAM中覆盖层中的C函数使用库中的函数时,例如:div/mod/。。。来自libgcc。libgcc链接在flash的主代码部分,该部分正忙

有没有办法防止交叉引用以及如何复制库代码?在这样的RAM覆盖层和闪存之间


干杯

这是很深的巫毒。这是什么样的嵌入式系统?您不能简单地使用静态二进制文件并手动将其复制到RAM中?你似乎在问的是,当然,不可能:不,你不能阻止flash中的libgcc和RAM中不能很好地使用flash的程序之间的代码复制,除非你完全避免使用libgcc中的任何东西,这本身就是不可能的。基本上:你的问题可能在别处。你能更具体地说明你想做什么吗?谢谢你的回复。目标是一个纯金属精灵目标。我正在尝试使用一个单独的ld脚本,在闪存忙时从RAM运行一个独立的代码。这可能是不可能的。对不起,我想复制库代码。问题编辑。我尝试使用一个使用单个ld脚本的覆盖,因为它简化了内存分配,同时在RAM中保留堆栈和变量…我有一个类似的问题,但我的问题涉及一些验证二进制文件的CPU ROM代码。为了验证二进制文件,它需要与加载它的引导加载程序处于相同的位置。您可以通过不使用这些功能来禁止使用“div/mod”。另一种方法是使用'-nostlib'并自己定义每个文件。您可以使用define编译“memcpy”、“memset”两次并重命名它们。如果你必须使用'div/mod',那么符号重命名可能是唯一的选择。这是相当深刻的伏都教。这是什么样的嵌入式系统?您不能简单地使用静态二进制文件并手动将其复制到RAM中?你似乎在问的是,当然,不可能:不,你不能阻止flash中的libgcc和RAM中不能很好地使用flash的程序之间的代码复制,除非你完全避免使用libgcc中的任何东西,这本身就是不可能的。基本上:你的问题可能在别处。你能更具体地说明你想做什么吗?谢谢你的回复。目标是一个纯金属精灵目标。我正在尝试使用一个单独的ld脚本,在闪存忙时从RAM运行一个独立的代码。这可能是不可能的。对不起,我想复制库代码。问题编辑。我尝试使用一个使用单个ld脚本的覆盖,因为它简化了内存分配,同时在RAM中保留堆栈和变量…我有一个类似的问题,但我的问题涉及一些验证二进制文件的CPU ROM代码。为了验证二进制文件,它需要与加载它的引导加载程序处于相同的位置。您可以通过不使用这些功能来禁止使用“div/mod”。另一种方法是使用'-nostlib'并自己定义每个文件。您可以使用define编译“memcpy”、“memset”两次并重命名它们。如果必须使用“div/mod”,那么符号重命名可能是唯一的选择。