web-dev-qa-db-ja.com

機能的なARMクロスGCCツールチェーンをUbuntu 18.04(Bionic Beaver)にインストールする方法

環境

最近、VMにUbuntu 18.04, Linux foobar-VirtualBox 4.15.0-23-generic #25-Ubuntu SMP Wed May 23 18:02:16 UTC 2018 x86_64 x86_64 x86_64 GNU/Linuxをインストールしました。 ハード浮動小数点を使用してCortex-M4F CPU用のアプリケーションをクロスコンパイルしたいので、gcc-arm-none-eabiバージョン15:6.3.1+svn253039-1build1だけでなくlibnewlib-arme-none-eabiパッケージもインストールしましたバージョン2.4.0.20160527-3

問題

ハードフロートを使用しているオブジェクトファイルとソフトフロートを使用しているライブラリの間の競合によるリンカエラーがあります。一部の調査では、これは既知の buntu 18.04 (Bionic Beaver)の問題であることが示されています。

正しいコンパイラとリンカのフラグを提供していることに注意してください。このプロジェクトは、Windowsクロスツールチェーン GNU ARM Embedded を使用して正しくビルドされます。完全なエラーをここに貼り付けても意味がありません。誰かが必要だと思った場合は、この質問を編集してください。

私がすでに試したこと

基本的な理解から、GCCを機能させるための2つの解決策がありますARMツールチェーン:

  1. gcc-arm-none-eabiをダウングレードして作業バージョンに戻す
  2. gcc-arm-none-eabiを削除して、代わりにチームからgcc-arm-embeddedをインストールGCC ARM embedded's PPA( Install gcc-arm-embedded from the PPA

Gcc-arm-none-eabiをダウングレードしますが、何にダウングレードしますか?

gcc-arm-none-eabiをダウングレードするには、パッケージマネージャーで以前のバージョンを見つける必要があります。最初にSudo apt updateでパッケージリストを更新してから、次のように入力しました。

Sudo apt show gcc-arm-none-eabi

パッケージ:gcc-arm-none-eabi
バージョン:15:6.3.1 + svn253039-1build1
優先度:追加
セクション:宇宙/開発
起源:Ubuntu
メンテナ:Ubuntu開発者
元のメンテナー:Agustin Henze
バグ: https://bugs.launchpad.net/ubuntu/+filebug
インストールサイズ:307 MB
依存:libc6(> = 2.15)、libgcc1(> = 1:3.0)、libgmp10、libisl15(> = 0.15)、libmpc3、libmpfr6(> = 3.1.3)、libstdc ++ 6(> = 5)、zlib1g(> = 1:1.1.4)、binutils-arm-none-eabi
推奨:libnewlib-arm-none-eabi
ホームページ: http://gcc.gnu.org/
ダウンロードサイズ:24.3 MB
APT-Sources: http://ch.archive.ubuntu.com/ubunt bionic/universe AMD64 Packages
説明:ARM Cortex-A/R/Mプロセッサ用のGCCクロスコンパイラ
組み込みのベアメタルコンパイラARM Cortex-M、Cortex-R、および
Cortex-Aプロセッサ。
このパッケージは、GNU ARM ARMが提供するツールチェーンに基づいています。

そこには、以前のバージョンはありません。ここにリストされているはずですが、表示されません。ダウングレードしたい正確な以前のバージョンを提供できない場合、ダウングレードできません。

Gcc-arm-none-eabiの代わりにgcc-arm-embeddedを使用する

私は上記のリンクにある指示に従って、次のコマンドを実行しました。

Sudo apt remove gcc-arm-none-eabi
Sudo apt-add-repository ppa:team-gcc-arm-embedded/ppa
Sudo apt update

[...] Ign:4 http://ppa.launchpad.net/team-gcc-arm-embedded/ppa/ubunt バイオニックInRelease
取得:5 http://security.ubuntu.com/ubunt bionic-security InRelease [83.2 kB]
Err:6 http://ppa.launchpad.net/team-gcc-arm-embedded/ppa/ubunt バイオニックリリース
404が見つかりません[IP:91.189.95.83 80]
パッケージリストを読み込んでいます...完了
E:リポジトリ ' http://ppa.launchpad.net/team-gcc-arm-embedded/ppa/ubunt bionic Release'にはリリースファイルがありません。
N:このようなリポジトリからの更新は安全に行うことができないため、デフォルトでは無効になっています。
N:リポジトリの作成とユーザー設定の詳細については、apt-secure(8)のマンページを参照してください。

Sudo apt-install gcc-arm-embedded

パッケージリストを読み込んでいます...完了
依存関係ツリーを構築しています
状態情報を読み取っています...完了
E:パッケージgcc-arm-embeddedが見つかりません

基本的に、PPAへのアクセスに問題があるようです。 aptスイッチ--allow-unauthenticatedを試しましたが、コマンドの出力は変更されませんでした。

質問

これらの2つのソリューションのいずれかを機能させる方法はありますか、またはCortex-M4F CPUのハードフロートアプリケーションを構築するためにUbuntu 18.04で機能的なGCCツールチェーンを取得する別の方法はありますか?

(私は最近この問題について Stack Overflowの質問 を投稿しました。現時点では、これはUnixの世界とはあまり関係のないツールチェーンの問題だと思いました。ここで答えを閉じて、このQ/Aにリダイレクトします)

8
Tim

developer.arm.com から機能的なツールチェーンをダウンロードし、既存のgcc-arm-none-eabiパッケージを削除した後、手動でインストールできます。

そのWebサイトにアクセスし、[ダウンロード]ボタンをクリックして、gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2を取得します。それをホームディレクトリに保存します。

古いUbuntuパッケージをアンインストールしたことを確認してください。

Sudo apt remove binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi

ホームディレクトリの新しいパッケージを解凍します。

tar -xjvf gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2

新しいツールチェーンをパスに追加します。

export PATH=$PATH:/home/(your user)/gcc-arm-none-eabi-7-2018-q2-update/bin/

この時点で、ARMコンパイラとツールチェーンが機能しているはずです(Unix初心者の場合:端末を閉じて新しい端末を開いた場合は、export PATHステートメントを再実行する必要があります。したがって、コンパイラーは再び取得されます。)

5
user3486184