linker-scripts

    2热度

    1回答

    我正在使用ARM M0开发嵌入式系统的项目。 必须创建一个ROM应用程序,其唯一目的是将东西存储在ROM中,并在需要时初始化数据和bss部分。 的loadscript到目前为止是这样的: MEMORY { rom (rx): ORIGIN = 0, LENGTH = 32K ; ram (!rx): ORIGIN = 0x10000, LENGTH = 8K ; } S

    2热度

    1回答

    通常,通过使用KEEP(),即使符号未被引用,ld也会保留该节中的符号。但是,这不是我的经验。如果没有引用,我不能创建保留符号的ld linkerscript。 这是否有一些先决条件的工作?

    2热度

    2回答

    我试着找到答案很长时间。对不起,但我真的找不到它。 我使用gcc,ld,gcc(汇编程序编译)。 我写剧本LD: SECTIONS { .text : *{.text} } LS_size = (SIZEOF(.text) + 2048) & (0xF800) >> 9 ; 我试着从汇编使用LS_size: _rom_size: .byte LS_size 它的做工精细,

    1热度

    1回答

    在Linux上链接的可执行文件,我得到一个“未定义的引用”的错误是这样的: undefined reference to `[email protected]_1.0' 我没有“SOMELIB”的控制,但我有符号symbol在一个我自己的共享库。我绝对相信[email protected]_1.0与我库中的符号相同(提供的功能完全相同),实际上甚至源代码也几乎相同。 如何强制/别名[email

    0热度

    1回答

    这与GNU链接器有关。如果我有一个不是.text,.data或.bss的部分,我该如何告诉链接器不要在这些部分中包含该部分。 例: SECTIONS { .text {} .data {} .bss {} .sec_var {} } 其实在我的情况sec_var有一定的全局变量,我不希望它成为数据段的一部分,但在默认情况下连接器具有孤立区段的概念,因此试图把该节。数据。由于这个原因

    2热度

    2回答

    问题 我的问题是,当我使用它的目的是将代码放到RAM以下脚本移居部分得到充斥着虚假数据。 我的问题是: 为什么比_etext符号越大_srelocate符号4个字节?他们不应该一样吗? 此外,如果1.的答案是NO,我不应该从_etext + 4复制到_srelocate? 背景和相关代码 我与爱特梅尔ATSAM3N4X系列处理器(了ARM Cortex M3)合作,并希望与我的链接脚本和.relo

    0热度

    1回答

    我很失望,因为我找不到关于内存分段的信息。我知道我应该将内存划分为诸如.text,.data,.bss,.stack之类的基本部分,这些部分用于已编译程序的目标文件中。我知道还有更多的其他章节,其中一些对C和C++来说是必需的。我正在搜索有关哪些部分应该包含在链接脚本中的信息?

    2热度

    2回答

    我想在其内存部分末尾放置一个特定变量。 所以,如果我有: file1.cpp: __attribute__((section(".mysection"))) char var1[] = "var1"; 而在另一个file2.cpp: __attribute__((section(".mysection"))) char var2[] = "var2"; 我怎么能强迫var2是在mysect

    2热度

    1回答

    背景包括 我现在用的是GNU工具ARM嵌入式处理器编译器,它是一个GCC编译器的代码输出部分。我目前正在Windows环境中工作。 我正在构建一个比较大的项目,并且已经成功编译了所有的源代码,但在链接阶段面临挑战。这个特定的平台作为两个独立的RAM区域,我需要将目标代码的某些部分映射到特定区域。 我想我应该能够使用连接器脚本,例如: SECTIONS { ER_CCM 0x100000

    4热度

    2回答

    真的有两个问题围绕使用--add部分。简单的就是标题。根据我的阅读,我一直无法弄清楚如何执行--add-section。 要使用添加部分,我必须传递部分名称。如果我使用现有的部分名称,程序将以“无法添加部分'.data':格式错误的文件作为响应。”也许我只需要传递另一个参数。如果我使用新的部分名称,我宁愿这样做,但我会收到警告:“分配的部分”.blob“不在分段中。” 现在,我已经获得了我的功能,