SlideShare a Scribd company logo
自作OS向けにlibc++を
ビルドする方法
2019/09/04 C++ MIX #5
@uchan_nos
自己紹介
• サイボウズ株式会社 運用本部
• セキュリティキャンプ全国大会の講師
• 2016年「USBメモリからブートしてみよう」
• 2017年から「OS開発ゼミ」
• 『30日でできる! OS自作入門』
の校正を担当(2006年)
• 『自作エミュレータで学ぶ
x86アーキテクチャ』著(2015年)
OS自作とは
• ほかのOSの力を借りずに起動するソフトウェア(なんでもい
い)を作ること
• ハードウェアに近い世界
• → パソコンを支配する感覚
• → エキサイティング!
有名な
自作OSたち
http://z-slash.net/os/osask/osask.png
OSASK
Mona OS
https://a.fsdn.com/con/app/proj/monaos/screenshots/90657.jpg
はりぼてOS
http://hrb.osask.jp/figures.html
自作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

More Related Content

PDF
レガシーフリーOSに必要な要素技術 legacy free os
PDF
プランクトンサミットの歴史2019
PPTX
30分で分かる!OSの作り方
PDF
30分で分かる!OSの作り方 ver.2
PPTX
OSを手作りするという趣味と仕事
PDF
OS development beginner with breadboard version 20161126
PDF
CoreOSってなんですか
PDF
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
レガシーフリーOSに必要な要素技術 legacy free os
プランクトンサミットの歴史2019
30分で分かる!OSの作り方
30分で分かる!OSの作り方 ver.2
OSを手作りするという趣味と仕事
OS development beginner with breadboard version 20161126
CoreOSってなんですか
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)

What's hot (20)

PDF
OS development beginner version 20160611
PDF
Making Editor written in Ruby version 20160611
PDF
【LT用前編】Rancherでマルチクラウド をやってみた
PDF
openSUSEの紹介とサーバ構築
PDF
最近の Windows Azure ってどう?
PDF
Ride on Azure! 詳細編
PPTX
OSS運用管理勉強会LT
PPTX
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
PPTX
APIドキュメントの話 #sphinxjp
PDF
Windows Subsystem for Linux 2
PPTX
Alfresco勉強会#26 alfresco community 5.0でssoを設定する
PPTX
ROSチュートリアル ROBOMECH2018
PPTX
AWS入門!!
PDF
Sphinxを使って本を書こう #pyconjp 2012
PPT
Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2
PDF
さくらのクラウドアップデート情報2016年7月版
PPTX
Cisco ios textpart01
PPT
ひとりsphinx
PDF
初心者がハマったWindows Azureの基礎の基礎
PDF
openSUSE で創作活動!イラストから本格的な印刷物作成まで
OS development beginner version 20160611
Making Editor written in Ruby version 20160611
【LT用前編】Rancherでマルチクラウド をやってみた
openSUSEの紹介とサーバ構築
最近の Windows Azure ってどう?
Ride on Azure! 詳細編
OSS運用管理勉強会LT
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
APIドキュメントの話 #sphinxjp
Windows Subsystem for Linux 2
Alfresco勉強会#26 alfresco community 5.0でssoを設定する
ROSチュートリアル ROBOMECH2018
AWS入門!!
Sphinxを使って本を書こう #pyconjp 2012
Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2
さくらのクラウドアップデート情報2016年7月版
Cisco ios textpart01
ひとりsphinx
初心者がハマったWindows Azureの基礎の基礎
openSUSE で創作活動!イラストから本格的な印刷物作成まで
Ad

Similar to Building libc++ for toy OS (20)

PDF
20150118 firefoxos-handson-helloworld
PPTX
サーバーレスアーキテクチャ(Azure Functions & Durable Functions)で働き方改革を推進
PDF
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
PDF
Macアプリのインストーラ作成ツールSwift版
PDF
達人出版会のご紹介(技術編)
PPTX
Keep a diary
PPTX
Parallels 13
PPT
2007 03 17_osc2007spring_01
PDF
さくらのクラウドを使ったシラサギ開発環境の準備
PDF
.NET Coreから概観する.NETのOSSへの取り組み
PDF
CSS Nite LP26 CodeKitで始める次世代Web制作
PDF
はじめての Azure 開発
PDF
デザイナーのためのXcode入門 先生:関根 元和
PDF
エンジニア勉強会20140424
PDF
Azure IaaS 環境で安心してシステム開発する方法を教えます
PPTX
Ocs2010 kyoto nonweb
PPTX
Ocs2010 kyoto nonweb
PDF
Visual Studioで始めるTypeScript開発入門
PPTX
Microsoft Azure x EC-CUBE @西浦温泉
PPTX
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
20150118 firefoxos-handson-helloworld
サーバーレスアーキテクチャ(Azure Functions & Durable Functions)で働き方改革を推進
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
Macアプリのインストーラ作成ツールSwift版
達人出版会のご紹介(技術編)
Keep a diary
Parallels 13
2007 03 17_osc2007spring_01
さくらのクラウドを使ったシラサギ開発環境の準備
.NET Coreから概観する.NETのOSSへの取り組み
CSS Nite LP26 CodeKitで始める次世代Web制作
はじめての Azure 開発
デザイナーのためのXcode入門 先生:関根 元和
エンジニア勉強会20140424
Azure IaaS 環境で安心してシステム開発する方法を教えます
Ocs2010 kyoto nonweb
Ocs2010 kyoto nonweb
Visual Studioで始めるTypeScript開発入門
Microsoft Azure x EC-CUBE @西浦温泉
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Ad

More from uchan_nos (20)

PPTX
MikanOSと自作CPUをUSBで接続する
PPTX
小型安価なFPGAボードの紹介と任意波形発生器
PPTX
トランジスタ回路:エミッタ接地増幅回路
PPTX
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
PPTX
自作言語でお絵描き
PPTX
OpeLa 進捗報告 at 第23回自作OSもくもく会
PPTX
サイボウズ・ラボへ転籍して1年を振り返る
PPTX
USB3.0ドライバ開発の道
PPTX
Security Nextcamp remote mob programming
PPTX
Langsmith OpeLa handmade self-hosted OS and LPS
PPTX
OpeLa セルフホストなOSと言語処理系の自作
PPTX
自動でバグを見つける!プログラム解析と動的バイナリ計装
PDF
1を書いても0が読める!?隠れた重要命令INVLPG
PDF
Introduction of security camp 2019
PDF
Timers
PDF
USB3 host driver program structure
PPTX
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
PPTX
1TB/dayのログを収集・蓄積する技術
PPTX
WalB: Real-time and Incremental Backup System for Block Devices
PPTX
5分で分かるサイボウズのSRE
MikanOSと自作CPUをUSBで接続する
小型安価なFPGAボードの紹介と任意波形発生器
トランジスタ回路:エミッタ接地増幅回路
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
自作言語でお絵描き
OpeLa 進捗報告 at 第23回自作OSもくもく会
サイボウズ・ラボへ転籍して1年を振り返る
USB3.0ドライバ開発の道
Security Nextcamp remote mob programming
Langsmith OpeLa handmade self-hosted OS and LPS
OpeLa セルフホストなOSと言語処理系の自作
自動でバグを見つける!プログラム解析と動的バイナリ計装
1を書いても0が読める!?隠れた重要命令INVLPG
Introduction of security camp 2019
Timers
USB3 host driver program structure
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
1TB/dayのログを収集・蓄積する技術
WalB: Real-time and Incremental Backup System for Block Devices
5分で分かるサイボウズのSRE

Building libc++ for toy OS