zoukankan      html  css  js  c++  java
  • gcc向待编译源文件传入参数的方法

    gcc有两种方法向待编译源文件传入参数

    第一种 利用–Dmacro=name 编译选项,详见gcc -D选项

    第二种 利用链接脚本(*.lds)传入参数,类似于ADS的编译器参数可以被待编译源文件调用

    举例:

    SECTIONS {
        . = 0x00000000;
        .init : AT(0){ head.o init.o nand.o}
        . = 0x30000000;
        .text : AT(4096) { *(.text) }
        .rodata ALIGN(4) : AT((LOADADDR(.text)+SIZEOF(.text)+3)&~(0x03)) {*(.rodata*)}
        .data ALIGN(4)   : AT((LOADADDR(.rodata)+SIZEOF(.rodata)+3)&~(0x03)) { *(.data) }
        __bss_start = .;
        .bss ALIGN(4)  : { *(.bss)  *(COMMON) }
        __bss_end = .;
    
    }

        程序的启动阶段要对bss段进行初始化,在程序的源文件中需要调用编译器产生的与之相关的两个参数__bss_start 、__bss_end才能确定bss段的区域进而进行初始化清零工作,如下边的源程序。

    void clean_bss(void)
    {
        extern int __bss_start, __bss_end;
        int *p = &__bss_start;
    
        for (; p < &__bss_end; p++)
            *p = 0;
    }

    总结这种方法的使用:

    1、  在连接脚本中定义需要调用的编译器参数

    2、  在程序的源文件中,编译器参数可以作为全局的常数使用

  • 相关阅读:
    android大作业------任务领取
    读书笔记《编程珠矶》2
    学习进度第8周
    学习进度第7周
    世界疫情可视化展示-----echarts
    读书笔记《编程珠矶》1
    团队项目新闻app的需求分析
    学习进度第6周
    团队合作项目
    SpringMVC01
  • 原文地址:https://www.cnblogs.com/amanlikethis/p/3425578.html
Copyright © 2011-2022 走看看