コンテキスト

コンテキスト

コンテキスト

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-1build1libnewlib-arme-none-eabi2.4.0.20160527-3

質問

リンカエラーは、ハード浮動小数点数を使用するオブジェクトファイルとソフト浮動小数点数を使用するライブラリとの競合が原因で発生します。いくつかの研究では、これが既知の事実であることを示唆しています。Ubuntu18.04(バイオニックビーバー)質問:

正しいコンパイラとリンカフラグを提供し、Windowsクロスツールチェーンを使用して正しく構築されたプロジェクトを提供しました。GNU ARM組み込み。ここに完全なエラーを貼り付けることは意味がないと思います。誰かが必要だと思ったら、質問を編集します。

私が試したこと

基本的な理解に基づいて、機能的なGCC ARMツールチェーンを得るための2つのソリューションがあります。

  1. gcc-arm-none-eabi動作しているバージョンに戻るには、ダウングレードしてください。
  2. Teamsからgcc-arm-none-eabiGCC ARM Embedded PPAをアンインストールしてインストールする(gcc-arm-embeddedPPAからgcc-arm-embeddedをインストールする)

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
優先順位: 追加
部分: Universe/devel
ソース: Ubuntu
メンテナ: Ubuntu 開発者
元の管理者: Agustin Henze
エラー:https://bugs.launchpad.net/ubuntu/+filebug
インストールサイズ:307 MBは
次のように異なります。 6(> = 5), zlib1g (>= 1:1.1.4), binutils-arm-none-eabi
推奨: libnewlib-arm-none-eabi
ホームページ:http://gcc.gnu.org/
ダウンロードサイズ:24.3MB
APTソース:http://ch.archive.ubuntu.com/ubuntubionic/universe amd64パッケージ
説明:ARM Cortex-A / R / Mプロセッサ用のGCCクロスコンパイラ
Cortex-M、Cortex-R、およびCortex-Aプロセッサを使用する組み込みARMチップ用のベアメタルコンパイラ。このパッケージは、ARMが提供するGNU 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:4http://ppa.launchpad.net/team-gcc-arm-embedded/ppa/ubuntuBionicInRelease
インポート: 5http://security.ubuntu.com/ubuntuBionic Security InRelease [83.2 kB]
エラー:6http://ppa.launchpad.net/team-gcc-arm-embedded/ppa/ubuntuBionicのバージョンが見つかりません。
404 [IP: 91.189.95.83 80]
パッケージのリストを読む... 完了
E: リポジトリ'http://ppa.launchpad.net/team-gcc-arm-embedded/ppa/ubuntuBionic Release 'にはリリースファイルはありません。
N:これらのリポジトリからの更新は安全に実行できないため、デフォルトでは無効になっています。
N: リポジトリの作成とユーザー構成の詳細については、apt-secure(8) マンページを参照してください。

sudo apt-install gcc-arm-embedded

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

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

質問

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

(最近投稿スタックオーバーフローの質問この問題について当時、私はそれがUnixの世界とあまり関係のないツールチェーンの問題だと思いました。ここで答えを得たら閉じて、このQ&Aにリダイレクトします)

答え1

以下から機能ツールチェーンをダウンロードできます。開発者ウェブサイトそして、既存のgcc-arm-none-eabiパッケージを削除して手動でインストールしてください。

ウェブサイトに行き、「ダウンロード」ボタンをクリックして次の項目を入手してください 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コンパイラが再起動されます。)

コンパイラがインストールされていることを確認してください。

gcc --version

関連情報