c - GNU ARM 的 #pragma

标签 c linker gnu-arm

我想将整个 C 文件包含在输出部分中,

这是我正在尝试的示例代码:

#include<stdio.h>
#pragma arm section code = ".sec_ro"
int main(void)
{
printf("Hi\n");
}
#pragma arm section

我用过:

arm-none-linux-gnueabi-gcc -S hello.c

获取.S文件。

但 .S 文件中似乎不存在 sec_ro 部分。

编辑/更新:

附加 .s 文件内容:

.arch armv5te
.fpu softvfp
.eabi_attribute 20, 1
.eabi_attribute 21, 1
.eabi_attribute 23, 3
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.eabi_attribute 26, 2
.eabi_attribute 30, 6
.eabi_attribute 18, 4
.file   "hello.c"
.section    .rodata
.align  2
.LC0:
    .ascii  "Hi\000"
    .text
    .align  2
    .global main
    .type   main, %function
main:
    .fnstart
.LFB0:
    @ args = 0, pretend = 0, frame = 0
    @ frame_needed = 1, uses_anonymous_args = 0
    stmfd   sp!, {fp, lr}
    .save {fp, lr}
    .setfp fp, sp, #4
    add fp, sp, #4
    ldr r0, .L2
    bl  puts
    mov r0, r3
    ldmfd   sp!, {fp, pc}

我想包含整个 C 文件来创建输出部分,我正在使用 GNU ARM 工具链,我是否遗漏了什么?

最佳答案

“#pragma arm”指令仅受 ARM 工具链(RVCT 或 DS-5)支持。对于 GCC,您需要使用链接器脚本或“_attribute(section)”样式语法。 armcc 和 GCC 都支持这一点:

http://www.keil.com/support/man/docs/armccref/armccref_Cacbgief.htm

关于c - GNU ARM 的 #pragma,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18964248/

相关文章:

c - 多个案例的 switch 语句

c - 解释数据表中的十六进制并使用 C 按位​​左移运算符进行转换

Android:无法加载库(94 缺少基本表)

c++ - 如何使用 c++/c 从 Windows 命令行一次运行多个命令?

java - C++相当于Java import等问题

c++ - 单独的类模板声明和特化

macos - 如何在 OS X 上静态链接

c - STM32 CubeMX/GNU/Eclipse-工具链重定向(newlib 和 libgloss)

c - 如何使用 arm-none-eabi-gcc + cmake 设置 cmocka 示例?