のバージョン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
./configure
cmake ..
make
cc
個人的には、私はこれさえもやりたくない。なぜなら、自分自身混乱してしまいます。クロス コンパイラの場合は、コンパイラがどのプラットフォームをターゲットにしているかが常にすぐにわかるようにすることを好みます。