GeekOS編譯於64位linux系統

來源:互聯網
上載者:User

開始GeekOS之旅的時候,一開始就碰到了小麻煩,在自己64位的Fedora上編譯GeekOS的時候報如下錯誤:

geekos/lowlevel.o: could not read symbols: File in wrong format

斷定是平台問題.再去官網看了下:

GeekOS is a tiny operating system kernel for x86 PCs.

看了後就決定換i386系統了,裝上後就發現很多需要配置,太麻煩,稍微思考片刻,記得以前在編譯其它i386代碼時,是可以跨平台的,編譯時間搜尋lib32庫不就行了嘛.研究了下GeekOS的Makefile.

GeekOS提供的Makefile中是有編譯於X64的配置的.拿 project0的Makefile來說,在第97行(GeekOS-0.3.0) 把TARGECT_CC_PREFIX開啟就可以了. 但是你的OS需要安裝Cross-development的開發包.

不過沒關係,還有個方法就是加編譯選項 -m32 和 連結選項 -m elf_i386 這樣會在編譯時間自動去找lib32.在GeekOS的 Makefile中第100,106,109行改成如下:

100 TARGET_CC := $(TARGET_CC_PREFIX)gcc -m32                                                  101 102 # Host C compiler.  This is used to compile programs to execute on                        103 # the host platform, not the target (x86) platform.  On x86/ELF104 # systems, such as Linux and FreeBSD, it can generally be the same                        105 # as the target C compiler.                                                               106 HOST_CC := gcc -m32                                                                       107 108 # Target linker.  GNU ld is probably to only one that will work.                          109 TARGET_LD := $(TARGET_CC_PREFIX)ld  -m elf_i386            

然後改動後,你可能需要安裝glibc的386版本,fedora安裝如下:

yum -y install glibc-devel.i686

然後再進行編譯就OK了:

cat geekos/fd_boot.bin geekos/setup.bin geekos/kernel.bin > fd.img 

鏡像檔案成功產生.



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.