364 Views
September 04, 19
スライド概要
C++MIX #5 presentation.
How to build libc++ for toy operating systems.
サイボウズ・ラボ株式会社で教育向けのOSやCPU、コンパイラなどの研究開発をしています。
自作OS向けにlibc++を ビルドする方法 2019/09/04 C++ MIX #5 @uchan_nos
自己紹介 • サイボウズ株式会社 運用本部 • セキュリティキャンプ全国大会の講師 • 2016年「USBメモリからブートしてみよう」 • 2017年から「OS開発ゼミ」 • 『30日でできる! OS自作入門』 の校正を担当(2006年) • 『自作エミュレータで学ぶ x86アーキテクチャ』著(2015年)
OS自作とは • ほかのOSの力を借りずに起動するソフトウェア(なんでもい い)を作ること • ハードウェアに近い世界 • → パソコンを支配する感覚 • → エキサイティング!
有名な 自作OSたち はりぼてOS OSASK http://hrb.osask.jp/figures.html http://z-slash.net/os/osask/osask.png Mona OS https://a.fsdn.com/con/app/proj/monaos/screenshots/90657.jpg
自作OSと標準ライブラリ • 自作OSのビルドフラグは特殊 • -O2 -Wall -g --target=x86_64-elf -fno-exceptions -ffreestanding -fno-rtti -std=c++2a • 専用にライブラリをビルドする必要がある • 標準ライブラリの選択肢 • C:Newlib,hariblibc • C++:libc++(llvm),libstdc++(gcc)
標準Cライブラリ • 標準Cライブラリの実装はたくさんある • libc,Newlib,hariblibc,… • hariblibc:「はりぼてOS」のビルドで使われる標準ライブラリのサブ セット。メモリ上の計算だけで完結する機能だけ実装されている。 • 詳しくは https://wiki.osdev.org/C_Library • 自作OSで使うならNewlibが強い • 機能,ビルドしやすさのバランス • ビルド例も多数
標準C++ライブラリのビルド • Newlib + libc++ • 自作OS向けのビルド方法がだんだん確立してきた • 2018/10/08「C++でできる!OS自作入門」 at 技術書典5 • @uchan_nosによる同人誌 • 2019/05/12「libc++をmacOSでもビルドして自作OSで使いたい!」 • @hikaliumさんによる発表 • https://twitter.com/hikalium/status/1127605283797082114?s=20 • 2019/07/21「building libcxx」 • https://github.com/osdev-jp/osdev-jp.github.io/wiki/building-libcxx
libc++により可能になること • operator new • libc++にはmallocを使ったnewの実装がある • Newlibでsbrkを実装するとnewが使えるようになる! • コンテナ • std::vector,std::map,std::dequeなど • その他 • std::function,std::find_if