uchan-nos / os-from-zero

『ゼロからのOS自作入門』(内田公太著、マイナビ出版)のサポートサイトです

Home Page:https://zero.osdev.jp/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

p94のmakeがうまくいきません。(cstdintが見つからない問題については解決策を確認済みです。)

b-pingu opened this issue · comments

p94のmakeを実行したところ、
他のissueでも何件か報告されている、下記のエラーが出ました。
fatal error: 'cstdint' file not found
解決策も確認して、下記のように対応をしました。

1.apt-get install libc++-devを
wslで実行。
2.wslからローカルに該当のMakefileを持ってくる。
3.MakefileをVScodeで下記のように編集。
CXXFLAGS += -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone
-fno-exceptions -fno-rtti -std=c++17

CXXFLAGS += -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone
-fno-exceptions -fno-rtti -std=c++17 -stdlib=libc++

4.mikanos/kernelのMakefileを削除し、cpコマンドで編集したMakefileをwslに持ってくる。

その後、makeを実行しました。
しかし、以下のような文言がでてうまくいかなかったようです。解決するように調べてみたのですが何のことか全くわからず、手が止まってしまっているのが現状です。

clang++ -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -stdlib=libc++ -c main.cpp
In file included from main.cpp:1:
In file included from /usr/include/c++/v1/cstdint:144:
/usr/include/c++/v1/__config:51:2: error: Unknown object file format
#error Unknown object file format
^
/usr/include/c++/v1/__config:1041:4: error: "No thread API"

error "No thread API"

^
2 errors generated.
Makefile:20: recipe for target 'main.o' failed
make: *** [main.o] Error 1

何か解決策などをご存知の方、教えていただきたいです。よろしくお願いいたします。

MikanOSのビルドでは、ビルドに用いているホストOSのヘッダファイルではなく、MikanOSビルド用のものを参照しなければなりません。そのため、

1.apt-get install libc++-devを
wslで実行。

これは何か勘違いがあると思います。上記コマンドで導入されるのは、そのホストOS用のヘッダファイル群ですので、MikanOSビルド時には不要です。

追加情報として、makeの代わりに(makeを実行するのと同じシェルで)

$ echo $CPPFLAGS

を実行した結果を教えてもらえますか?

https://github.com/uchan-nos/mikanos-build#mikanos-%E3%81%AE%E3%83%93%E3%83%AB%E3%83%89
に記載した下記コマンドを実行してあれば、いろいろと設定値が表示されるはずです。

$ source $HOME/osbook/devenv/buildenv.sh

返信に間が空いてしまい申し訳ありません。
$ echo $CPPFLAGS
を実行したところ何も出ませんでした。
source $HOME/osbook/devenv/buildenv.sh
を実行した後は
-I/root/osbook/devenv/x86_64-elf/include/c++/v1 -I/root/osbook/devenv/x86_64-elf/include -I/root/osbook/devenv/x86_64-elf/include/freetype2 -I/root/edk2/MdePkg/Include -I/root/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))'
と出ました。
その後makeしたところ上手くいきました。
$ source $HOME/osbook/devenv/buildenv.sh
を実行する手順が抜けていたのですね教えていただきありがとうございます。

上手く行ったということで良かったです。
Issueはクローズしますね。
また何かあれば新規Issueを立ててくださいませ。

ありがとうございました。