[問題] bootloader 不需要 OS 也能用 C header?

看板C_and_CPP作者 ((((((((((()))))))))))時間14年前 (2011/10/21 10:31), 編輯推噓0(0011)
留言11則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 問題(Question): 最近在 trace 一個 bootloader (x-loader)的 source code 原以為在沒有 OS 的環境下就不能呼叫 standard C library 但是 source code 裡面還是有不少檔案有 include standard C library 像是 #include <stdio.h> #include <errno.h> #include <stdlib.h> #include <string.h> 另外還有 include 到 linux 的 header files #include <malloc.h> #include <linux/types.h> #include <sys/stat.h> #include <fcntl.h> 這跟我想像的差很多...是我的觀念有問題嗎? 還是只要 static link 成一個不依賴外部 library 的程式, 一樣可以在沒有 OS 的環境下面執行? 請幫小的解惑 <(_._)> 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.78.82

10/21 10:47, , 1F
可以確定的是,boot loader 是在bios 開機自我測試完後,
10/21 10:47, 1F

10/21 10:48, , 2F
進入 os 前執行的東西.
10/21 10:48, 2F

10/21 10:59, , 3F
原po先想想os的作用是什麼
10/21 10:59, 3F

10/21 11:01, , 4F
或許可以看看boot loader的編譯方式
10/21 11:01, 4F

10/21 11:02, , 5F
很多東西本來就不需要OS支援,編出來的程式不會有os calls的
10/21 11:02, 5F

10/21 11:03, , 6F
但是像stdio,bootloader必須要替供替代的方案
10/21 11:03, 6F

10/21 11:03, , 7F
所以是include stdio沒錯,但是printf不會是link到原本那版
10/21 11:03, 7F

10/21 11:03, , 8F
他會有他自己的library
10/21 11:03, 8F

10/21 11:04, , 9F
原po真的很有興趣的話可以去買一本寫microkernel的書來看
10/21 11:04, 9F

10/21 11:04, , 10F
會比較了解怎麼寫freestanding的程式
10/21 11:04, 10F

10/22 01:38, , 11F
bootloader可以自備一個簡化的小os,藉之再開啟下一個大OS
10/22 01:38, 11F
文章代碼(AID): #1EeDcJO3 (C_and_CPP)