프로그램 사용/gcc

링커 스크립트를 이용한 변수 값 할당

구차니 2026. 3. 13. 15:33

링커 스크립트에서 만든 변수를

c에서 끌어오려면 extern 을 해주면 계산된 값이 불려온다.

 

SECTIONS
{
    /* Starts at LOADER_ADDR. */
    . = 0x80000;
    /* For AArch64, use . = 0x80000; */
    __start = .;
    __text_start = .;
    .text :
    {
        KEEP(*(.text.boot))
        *(.text)
    }
    . = ALIGN(4096); /* align to page size */
    __text_end = .;

    __bss_start = .;
    .bss :
    {
        bss = .;
        *(.bss)
    }
    . = ALIGN(4096); /* align to page size */
    __bss_end = .;
    __bss_size = __bss_end - __bss_start;
    __end = .;
}
: 저 변수들은 실제 저안에서 사용된다기 보다는 소스 코드(C 파일 혹은 어셈블리어 파일)상에서 사용되면서 의미가 부여된다. 저 변수들을 소스 코드상에서 불러 오려면 어떻게 해야 할까? 아래의 코드를 보자.

extern unsgined char __text_start
uint8_t *text_start = &__text_start;

+
extern usigned int __bss_size;

[링크 : https://yohda.tistory.com/entry/LINUXBUILD-링커스크립트]

[링크 : https://gustorage.tistory.com/27]