Open inadera-rantaro opened 3 years ago
ちょっと放置してしまっていたのですが、軽く調査してみました。 結論としては、おそらくMikanOSがEDK2のヘッダファイルを無理矢理インクルードして利用しているのが原因だと思われます。
2021年7月にEDK2に導入された次の変更がビルドエラーを引き起こしています。 https://github.com/tianocore/edk2/commit/ad1009ec626bea7a718d595f98f0ad49a16c6e5b
clang++の標準設定ではワイド文字 L'A'
は4バイト単位となるようです。
したがって L"A"
はヌル文字を含めて 8 バイトとなります。
https://wandbox.org/permlink/AarRHBZWG9XhndIQ
clang++のオプションに -fshort-wchar
を渡すと、上記のビルドエラーを防げる可能性があります。
https://wandbox.org/permlink/y4IaeXoPuTts6wha
mikanos-buildで配布しているAnsibleファイルでは、EDK2の古いバージョン(https://github.com/tianocore/edk2/commit/38c8be123aced4cc8ad5c7e0da9121a181b94251)を指定して使うようにしており、この問題が表面化していません。
将来的に問題になるので、直すとすると、MikanOSがEDK2のヘッダファイルに依存しないようにするのが根本的な修正だろうと思います。
もっと楽にするなら、clang++に -fshort-wchar
を渡すようにする方法があり得ます。
MikanOSでは今のところワイド文字を使っていないので、この方法でも当面は問題がないと思います。
MikanOSのビルド中にエラーが発生しました。 発生状況は以下の通りです。
環境はWSL2+Ubuntu20.04
エラーの該当箇所をコメントアウトした結果、ビルド、実行ともにうまくいきました。 ただ、なぜエラーが発生したのか、コメントアウトしたままでよいのかが分かりません。
分かる方いらっしゃいましたら教えてください。