arm-linux-gnueabihf-gcc のバージョンを切り替えるにはどうすればいいですか?

arm-linux-gnueabihf-gcc のバージョンを切り替えるにはどうすればいいですか?

のバージョン5を使用したいと思いますarm-linux-gnueabihf-gcc

そこで私は以下からインストールしました:

apt-get install gcc-5-arm-linux-gnueabihf

しかし、今実行するとgcc --versionバージョン 7 であることがわかります。

古いバージョンを使用するように指示するにはどうすればよいですか?

それとも、新しいバージョンを完全にアンインストールする必要がありますか?

答え1

arm-linux-gnueabihf-gcc-5の代わりにを実行できますgcc

このファイルリストgcc-5-arm-linux-gnueabihfパッケージが に配置するその他のツールの名前も含まれています/usr/bin。これは役に立つかもしれません。(実行しているリリースについては言及していませんが、そのリリースは人気のある LTS であり、デフォルトでバージョン 7 になっているため、18.04 であると推測します。)

デフォルトのバージョンを使用したい場合でも、whatが/usr/bin/gcc指しているものを変更しない限り(これはお勧めしません)、gccコマンドはGCCコンパイラを実行して生成します。ネイティブ実行ファイル。UbuntuシステムがARM上で動作していない限り、これはARMコンパイラではありません。armhf用のGCCクロスコンパイラのデフォルトバージョンを実行するには、arm-linux-gnueabihf-gcc(およびこのファイルリスト)。

ネイティブコンパイラとクロスコンパイラの両方の複数のバージョンを、同時に同じシステムにインストールできます。gccただし、このコマンドで呼び出されるのは、通常、ネイティブGCCコンパイラのデフォルトバージョンのみです。他のコマンドには、ツールチェーンプレフィックス、バージョンサフィックス、または(この場合は)両方があります。これは、システムにインストールされているコンパイラが、そのデフォルト以外のコンパイラのみである場合。

どうしてもgccそのコンパイラを呼び出さなければならない場合は...

gccなどの他のビルドツールがmake呼び出しているためにそのコンパイラを呼び出す必要がある場合gcc、通常、最善のアプローチは、他のツールを再設定するか、CC必要なコンパイラに環境変数を設定することです。gcc必要なコンパイラを実行するだけでは十分ではないかもしれません。十分な他のツールの名前ではネイティブ バージョンが引き続き実行されるためです。

そうは言っても、あなたのUbuntuシステムがないARMHFシステムですが、それでも本当に欲しい gccクロス コンパイラを実行するにはarm-linux-gnueabihf-gcc-5、いくつかのオプションがあります。/usr/bin/gccシンボリック リンク (18.04 では にリンクgcc-7) を置き換えることもできますが、お勧めしません。これを行うと、ネイティブ コンパイラであると想定されているものがすべて壊れる可能性がありgcc、将来のパッケージ管理操作に干渉したり、元に戻されたりする可能性があります。

代わりに、ユーザーのプライベート bin ディレクトリ に へgccのシンボリックリンクを配置できます。デフォルトのユーザーごとの ファイルは、ディレクトリが存在する場合、ログイン時に にそのディレクトリを追加します。カスタマイズしない自動ビルド (または を実行してからを実行する場合など) では通常 が使用されます。これはネイティブ コンパイラへのシンボリックリンクであり続けるため、これによって問題が発生することはありません。arm-linux-gnueabihf-gcc-5~/bin~/.profile$PATH./configurecmake ..makecc

個人的には、私はこれさえもやりたくない。なぜなら、自分自身混乱してしまいます。クロス コンパイラの場合は、コンパイラがどのプラットフォームをターゲットにしているかが常にすぐにわかるようにすることを好みます。

関連情報