如何在 gcc 的特定部分中放置一组变量,arm 是不是有类似 #pragma default_variable_attributes 的东西

Posted

技术标签:

【中文标题】如何在 gcc 的特定部分中放置一组变量,arm 是不是有类似 #pragma default_variable_attributes 的东西【英文标题】:How do I place a group of variables in a specific section in gcc, is there anything like #pragma default_variable_attributes available with arm如何在 gcc 的特定部分中放置一组变量,arm 是否有类似 #pragma default_variable_attributes 的东西 【发布时间】:2016-01-06 16:37:12 【问题描述】:

以下链接 https://www.iar.com/support/tech-notes/linker/how-do-i-place-a-group-of-functions-or-variables-in-a-specific-section/ 解释了如何将一组变量放在特定部分中,这是使用 IAR arm 链接器。

从此处的链接粘贴示例(我想要一个 gcc 等效项)

/* Place following data in section MY_DATA */
#pragma default_variable_attributes = @ "MY_DATA"

int data1;
int data2;

/* Stop placing data in section MY_DATA */
#pragma default_variable_attributes =

在 gcc 中我们有没有这样的功能,这有助于我在源代码中定义变量如何连续放置。

问候

【问题讨论】:

【参考方案1】:

使用 gcc,您可以使用编译器的 __attribute__ 声明符语法扩展,例如

int my_global_1 __attribute__ ((section ("MyData"))) = 0;
int my_global_2 __attribute__ ((section ("MyData"))) = 0;

__attribute__ ((section ("MyFuncs"))) int foo(int i) 

    return i * i;

【讨论】:

谢谢 Mike,我之前已经尝试过了……但上次犯了一个错误,其中一个变量被提到为 const,这导致了一些错误。您的回答帮助我重新审视了宣言。

以上是关于如何在 gcc 的特定部分中放置一组变量,arm 是不是有类似 #pragma default_variable_attributes 的东西的主要内容,如果未能解决你的问题,请参考以下文章

在Ubuntu下,安装arm-linux-gcc交叉编译器,环境变量也都设置好了,运行arm-linux-gcc 提示未找到命令

ARM Cortex M3上的GCC:从特定地址调用函数

在Ubuntu下,安装arm-linux-gcc交叉编译器,环境变量也都设置好了

如何安装arm-linux-gcc

关于arm-linux-gcc已经配置好环境变量可还显示找不到的问题

函数模板的部分属性在 GCC 中被静默忽略