簡體   English   中英

我應該如何為gcc的-nostartfiles或-nostdlib選項編寫代碼?

[英]How should I write code for -nostartfiles or -nostdlib options for gcc?

我在gcc編譯選項下遇到了-nostartfiles-nostdlib選項。 但是,我不了解如何為上述選項編寫代碼。 您是否需要編寫每個啟動函數(例如_start__libc_csu_init等)?

我可以為這兩個選項獲得簡化的代碼,只是為了了解它的工作原理嗎?

編輯

我也剛剛發現,將staticnostartfiles一起使用nostartfiles引發segmentation fault 一個簡單的C代碼可以重現該代碼:

#include<stdio.h>
#include<stdlib.h>
void _start()
{
    int x = main();
    exit(x);
}

int main()
{
    printf("Hello world!\n");
    return 0;
}

編譯使用:

gcc -nostartfiles -static -o foo foo.c

上面代碼的輸出是segmentation fault 是預期的輸出嗎?

是的,這是預期的行為。 如果要編寫自己的啟動代碼或自己的標准庫,則需要這些選項,否則您將無法編寫自己的代碼,因為符號會重復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM