[英]How should I write code for -nostartfiles or -nostdlib options for gcc?
我在gcc編譯選項下遇到了-nostartfiles
和-nostdlib
選項。 但是,我不了解如何為上述選項編寫代碼。 您是否需要編寫每個啟動函數(例如_start
, __libc_csu_init
等)?
我可以為這兩個選項獲得簡化的代碼,只是為了了解它的工作原理嗎?
編輯 :
我也剛剛發現,將static
和nostartfiles
一起使用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.