uchan-nos / os-from-zero

『ゼロからのOS自作入門』(内田公太著、マイナビ出版)のサポートサイトです
https://zero.osdev.jp/
250 stars 10 forks source link

【報告】clangのVer.7と別バージョンをインストールするとVer.7に戻せなくなる #129

Closed ghost closed 2 years ago

ghost commented 2 years ago

【現象】   osbook/devenv内のansible-playbookにてclang-7をインストールの後、オリジナルのOS開発に取り掛かろうと思い同一OS内の別フォルダを開発用に用意しました。   別環境の方では、clang-12を使おうと思いインストールしたのですが、どうやらclang-7から大幅に最適化機能が進化してしまっているようで、書籍に記載されている内容ではビルド後のイメージが実行できませんでした。   clang-7にバージョンを戻そうと"update-alternatives --config"を使い、バージョンを切り替え、update-alternatives上ではclang-7に切り替わっているのですが、"clang --version"と入力すると、"version 12.0.0"と表示され、内部的にversion 7に切り替わらないようです。

【結論】   ネットでいろいろ検索したのですが、どうやらclang-7はalternativesに登録できるものの、正式にalternativesのバージョン切り替えに対応していないようです。   clangのコマンド自体、内部的にlibclang1-7やlibclang-common-7などの関連するライブラリに依存しているみたいですが、そのライブラリ自体のあるディレクトリ名にバージョン番号が含まれており、単純にalternativesでそのライブラリを切り替えればいいという話でもなさそうです。

と、ここまでが調べたところなのですが、ほかの方で壊してはまずいOS環境を使われている方がいらっしゃる可能性もあるので、そういう方は仮想環境にて開発環境(clang-7)を整えて開発を行ったほうが良いと思い、情報提供の意味も込めてissueを挙げさせていただきました。

uchan-nos commented 2 years ago

情報ありがとうございます。 alternativesの仕組みでは上手く切り替えできないんですね。初めて知りました。