組込みLinux Beaglebone Cアプリをクロスコンパイル Hello World! eclipse

eclipse にはRemote Explorerという便利なツールがあるので、uBuntu上のEclipseでクロスコンパイルしてBeaglebone Blackに簡単に実行可能なプロジェクトを転送して、eclipse上のSSH Terminalでそのプロジェクトを実行してデバッグができるので非常に軽快に組込みLinux向けのアプリ開発が出来ます。 備忘録用です。

eclipseインストール

まずJava JDKをインストール

java runtime environment(jre)が必要なのでインストールします。

$ java -version
$ sudo apt update
$ sudo apt install default-jre

  • jre:Java Runitime Environment
  • jdk:Java Development Kit
  • 複数のバージョンをインストールしてコンパイラを切り替える時、sudo update-alternatives --config javac
  • 実行ファイルのバージョンを切り替える時、sudo update-alternatives --config java

~/.bashrcに次を追加してPATHを通す

export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
export PATH=$PATH:$JAVA_HOME/bin

eclipseインストール

  • http://www.eclipse.org/downloads/ Download x86_64を選択。2022.12版。
  • Doneteが表示されますが、ダウンロードしています。100MBくらい
  • Downloadsディレクトリに行き、そこで解凍
  • 出来たディレクトリに入っていくと、eclipse-instがあるのでダブルクリックするとインストーラーが出てきたので、『Eclipse IDE for C/C++ Developer』を選択。

そのまま何も触らず『INSTALL』をクリックして、次に表示される『ACCEPT NOW』をクリックすると、インストールが始まりました。

  • releases.linaro.org/components/toolchain/binaries/
  • arm-linux-gnueabihfを選択。 
  • uBuntuの場合は、gcc-linaro-version-year.month-x86_64_arm-linux-gnueabihf.tar.xz 私のバージョ ンは7.5-2019.12
  • gcc-linaro
  • Windowsの場合は、makeもインストールしなければなりません。 uBuntuの場合は不要です。

eclipse で試してみる

  1. 起動したら(WorkspaceはそのままでもOK)
  2. File〜New〜C/C++ Project〜C Managed BuildでNext
  3. Project Nameを入力『Test』〜Executableの下の『Hello World ANSI C Project』、『Cross GCC』を選択しNext
  1. Authorに名前を入れて『Next』
  1. 『Advanced setting』に入りクロスコンパイラの『PATH』を設定する。 PATH設定は、この次を参照。
  2. PATH設定が終わったら。
  3. 『Next』
  1. 『PATH』を選択して、『Edit…』をクリックする。
  2. PATH入力画面が出るので、末尾まで移動して『:』を追記。 そしてその次に、クロスコンパイラの絶対パスを入力する。 BBB向け、クロスコンパイラは…/arm-linux-gnueabifh/bin/の下にあります。 私の場合、『/home/ichiri/BBB_Workspace/Udemy-build/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin』です。
  3. 『Apply and Close』で前の画面に戻る。

  1. Cross compiler prefixに『arm-linux-gnueabihf-』。 末尾に『-』が必要です。 *下の図では『-』がないのでエラーになります。
  2. Cross complier pathに、私の場合は『/home/ichiri/BBB_Workspace/Udemy-build/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin』といれ
  3. 『Finish』をクリック

*Windows の場合は、

  1. 『make』をインストールして、
  2. makeがインストールされたディレクトリの中にある、実行ファイルのmakeとdll等全てのファイルを、コンパイラがある/bin/ディレクトリ内コピペしておきます。

『Test』の上で右クリックして『Build Project』を選択

ビルドが完了したら、Testの下に『Binary』が出来ていると思います。 次にRemote System ExplorerでBBBに転送します。 ドラッグアンドドロップなので、scpみたいに毎回打ち込まなくて簡単です。

Remote System Explorer

  1. eclipseのHelp から『Install New Software』を選択
  2. Work withのプルダウンメニューから『All Available Sites』を選択
  3. 下のリストの『Mobile and Device Development』にチェックを入れる
  4. 『Next』を押して次も『Next』を押すと
  5. Agreementの画面ではAgreeにチェックを入れて再度『Next』を押す
  6. Software Updateのメッセージがポップアップするので、『Restart Now』を押す
  1. メニューの『Window』の下の『Show View』から『Other』を選択
  2. 『Remote Systems』を選択して『Open』をクリック
  1. 『Define a connection to remote system』のアイコンをクリック
  1. 『SSH Only』を選択して『Next』
  1. Host nameに、BBBのIPアドレスを入れる。
  2. Connection nameを入れて『Finish』をクリックします。
  1. Localの下にConnection Nameの『BBB』が現れるので、『BBB』上で右クリック
  2. 左のメニュから『Host』を選択
  3. BBBを立ち上げて、minicomからBBBにwhoamiとすると、UseIDが表示されます。
  4. そのユーザーIDを、Default User IDに入力します。 私はBuildrootで作ったばかりなので他のユーザーIDも登録していないので、とりあえず『root』と入力
  5. 『Verify host name』にチェックを入れておく
  6. 『Apply and Close』をクリック
  1. 『BBB』の下の『sftp files』の左の▶をクリックして、『My Home』の左の▶をクリックして
  2. パスワードを入力し『OK』

  1. これでBBBのフォルダにアクセス出来るようになりました。 私の場合、『My Home』は/etc/passwdのrootユーザーで指定されている『/root』です。
  1. Project 『Test』のBinariesの下の『Test-[arm/le]』を、置きたいディレクトリにドラッグアンドドロップします。 私は、/home/ichiriを作ってそこに置きました。

次に、BBBに転送したプロジェクトをSSHターミナルを設定して実行します。

  1. メニューバーの『Window』から『Show view』、『Terminal』を選択
  2. Open a Terminal アイコンをクリック
  3. 『Choose terminal』で『SSH Terminal』を選択
  4. SSH接続情報を入れます。
    1. Host BBBのIPアドレス
    2. User 私の場合は、『root』
    3. Password
    4. Save userにチェックを入れる
    5. Save passwordにチェックを入れる。 これで次からHostsにリストアップされます。
  1. SSHでつながってシェルが起動しています。

  1. Binary file 『Test』を入れたディレクトリに移動。 私の場合は『/home/ichiri』
  2. Testファイルに実行権限を付ける。 私の場合は『root』でログインしているので700ですが、一般ユーザーでログインしていたら、770のだと思います。
  3. 実行すると、『Hello World』が表示されたので、x86系PCでコンパイルしたプログラムが、Arm系ボードで動作しているのが分かります。

これで終わりです。

(参考)

インポート サンプルプロジェクト方法

  1. Workspaceを開いておく
  2. メニューの『File』から『Import』を選択
  3. 『General』の下の『Existing Projects into Workspace』を選択し『Next』

『Select root directory』で、複数のサンプルソースコードが入った元のディレクトリを設定して『Finish』をクリック

クロスコンパイラとPATH 設定(再設定)方法

  1. 右のProject Explorerのプロジェクトの上で右クリックして『Properties』を選択
  2. 右のツリーから『C/C++ Build』を開いて『Settings』〜『Cross settings』を開いて、PrefixやPathを編集する。
  3. *プロジェクト毎にコンパイラの設定が必要。

コメント