Armadilloフォーラム

gcc によるアプリ開発について

uenokatsutoshi

2023年10月1日 15時40分

Armadillo 2?0で作成したシステムで用いていたCで書いたシリアル通信用プログラムを,
IoT A6Eにもインストールしようとしています.
当時と開発方法が大きく変わってしまったため,取っ掛かりがつかめずに往生しています.

1 GCC系の開発環境の準備はどのようにすればよろしいでしょうか.
   ATDE3ではクロス開発環境が用意されていました.
   ATDE9ではどのようにすればよろしいでしょうか.
   あるいはVScodeでcのプログラムを作成するのでしょうか.

2 A6Eのcによる開発の参考となる資料はございませんか.
  ひとまずHello world の方法がわかると助かります.

 

コメント

uenokatsutoshi

2023年10月1日 18時09分

YoutubeのIoT A6に関する動画を参考に,ターゲット上でコンパイルできるようにしようと,
apk add gcc
apk add make
を行い,gccとmakeをA6Eにインストールしました.
しかしインクルードファイルが無いとのことで,コンパイルができませんでした.
A6にあったbuild-essentialパッケージに相当するものがわかりません.

> Armadillo 2?0で作成したシステムで用いていたCで書いたシリアル通信用プログラムを,
> IoT A6Eにもインストールしようとしています.
> 当時と開発方法が大きく変わってしまったため,取っ掛かりがつかめずに往生しています.
>
> 1 GCC系の開発環境の準備はどのようにすればよろしいでしょうか.
>    ATDE3ではクロス開発環境が用意されていました.
>    ATDE9ではどのようにすればよろしいでしょうか.
>    あるいはVScodeでcのプログラムを作成するのでしょうか.
>
> 2 A6Eのcによる開発の参考となる資料はございませんか.
>   ひとまずHello world の方法がわかると助かります.
>
>  
>
>
>

koga

2023年10月1日 18時33分

アットマークテクノの古賀です。

uenokatsutoshiさん:
>YoutubeのIoT A6に関する動画を参考に,ターゲット上でコンパイルできるようにしようと,
>apk add gcc
>apk add make
>を行い,gccとmakeをA6Eにインストールしました.
>しかしインクルードファイルが無いとのことで,コンパイルができませんでした.
>A6にあったbuild-essentialパッケージに相当するものがわかりません.
>
>>Armadillo 2?0で作成したシステムで用いていたCで書いたシリアル通信用プログラムを,
>>IoT A6Eにもインストールしようとしています.
>>当時と開発方法が大きく変わってしまったため,取っ掛かりがつかめずに往生しています.
>>
>>1 GCC系の開発環境の準備はどのようにすればよろしいでしょうか.
>>   ATDE3ではクロス開発環境が用意されていました.
>>   ATDE9ではどのようにすればよろしいでしょうか.
>>   あるいはVScodeでcのプログラムを作成するのでしょうか.

Armadillo Base OS 上で直接実行するプログラムや、Armadillo Base OS がベースにしている Alpine Linux のコンテナで動作するプログラムをビルドするのは、ATDE 9 で開発環境入りの Alpine Linux コンテナを動かすのが簡単です。
このフォーラムの、こちらをご覧になってみてください:
 https://armadillo.atmark-techno.com/forum/armadillo/14009#comment-12363

>>2 A6Eのcによる開発の参考となる資料はございませんか.
>>  ひとまずHello world の方法がわかると助かります.

上で紹介したコメントの最後の方にも書きましたが、Armadillo Base OS 上で Debian コンテナを作って Debian コンテナ内で実行するのであれば、ATDE 9 上で、armhf のクロスコンパイラ(arm-linux-gnueabihf-gcc)を使ってクロスビルドしたバイナリを使えます。

以上、参考になりましたら幸いです。

uenokatsutoshi

2023年10月2日 7時09分

古賀様
上野です.お返事いただき,ありがとうございます.
ホストOSをUbuntu studio 22.04としています.
セキュリテイからみの制約でVMplayerがうまく動かないので,virtualbox上にATDE9
をインストールしていますが,networkがうまく繋がりません.
同じvirtualboxに載せた他のOSではネットはちゃんとつながってはいます.
仕方がないのでUbuntuに直接dockerをインストールしてみました.

ご教示いただいたフォーラムを参考にコンテナをビルドしてみました.
残念ながらbuild.shで2つほどエラーが出て,肝心なA6E対応のコンテナが
インストールできませんでした.
エラーは
exec /bin/sh: exec format error
というものでした.

後で別のpcでも試してみようと思います.

buildできたコンテナは次のとおりでした.
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine-3.16-x86_64 latest 7c9c63494d66 About a minute ago 210MB
arm32v7/alpine 3.16 51610eda6112 7 weeks ago 3.79MB
arm64v8/alpine 3.16 47a0d92d42c9 7 weeks ago 5.3MB
amd64/alpine 3.16 187eae39ad94 7 weeks ago 5.54MB

> アットマークテクノの古賀です。
>
> uenokatsutoshiさん:
> >YoutubeのIoT A6に関する動画を参考に,ターゲット上でコンパイルできるようにしようと,
> >apk add gcc
> >apk add make
> >を行い,gccとmakeをA6Eにインストールしました.
> >しかしインクルードファイルが無いとのことで,コンパイルができませんでした.
> >A6にあったbuild-essentialパッケージに相当するものがわかりません.
> >
> >>Armadillo 2?0で作成したシステムで用いていたCで書いたシリアル通信用プログラムを,
> >>IoT A6Eにもインストールしようとしています.
> >>当時と開発方法が大きく変わってしまったため,取っ掛かりがつかめずに往生しています.
> >>
> >>1 GCC系の開発環境の準備はどのようにすればよろしいでしょうか.
> >>   ATDE3ではクロス開発環境が用意されていました.
> >>   ATDE9ではどのようにすればよろしいでしょうか.
> >>   あるいはVScodeでcのプログラムを作成するのでしょうか.
>
> Armadillo Base OS 上で直接実行するプログラムや、Armadillo Base OS がベースにしている Alpine Linux のコンテナで動作するプログラムをビルドするのは、ATDE 9 で開発環境入りの Alpine Linux コンテナを動かすのが簡単です。
> このフォーラムの、こちらをご覧になってみてください:
>  https://armadillo.atmark-techno.com/forum/armadillo/14009#comment-12363
>
> >>2 A6Eのcによる開発の参考となる資料はございませんか.
> >>  ひとまずHello world の方法がわかると助かります.
>
> 上で紹介したコメントの最後の方にも書きましたが、Armadillo Base OS 上で Debian コンテナを作って Debian コンテナ内で実行するのであれば、ATDE 9 上で、armhf のクロスコンパイラ(arm-linux-gnueabihf-gcc)を使ってクロスビルドしたバイナリを使えます。
>
> 以上、参考になりましたら幸いです。

at_dominique.m…

2023年10月2日 11時13分

上野さん

よこからすみません、
マルティネです。

> virtualbox上にATDE9をインストールしていますが,networkがうまく繋がりません.
> 同じvirtualboxに載せた他のOSではネットはちゃんとつながってはいます.

おかしいですね。
ATDE9 はインタフェース名と関係なく dhcp で設定してくれているはずですので、virtualbox での設定が正しければ接続できるはずです。
ネットワーク設定の「アダプタータイプ」や NAT の設定を変更すれば動き出すかもしれません。

> 残念ながらbuild.shで2つほどエラーが出て,肝心なA6E対応のコンテナが
> インストールできませんでした.
> エラーは
> exec /bin/sh: exec format error
> というものでした.

このエラーは、arm のバイナリーを実行できないと言うエラーです。
ATDE9 では qemu-user を設定して、emulation で実行できるようにしていますが、自分の OS の場合は設定する必要があります。
qemu-user-static パッケージをインストールして、「update-binfmts --display | grep -i arm」で qemu-arm (enabled) が表示されることを確認していただければ、おそらく実行できるようになります。

よろしくお願いします。

uenokatsutoshi

2023年10月2日 13時41分

マルティネさん
上野です。アドバイスありがとうございます。
qemu-userの設定も試してみます。

> 上野さん
>
> よこからすみません、
> マルティネです。
>
> > virtualbox上にATDE9をインストールしていますが,networkがうまく繋がりません.
> > 同じvirtualboxに載せた他のOSではネットはちゃんとつながってはいます.
>
> おかしいですね。
> ATDE9 はインタフェース名と関係なく dhcp で設定してくれているはずですので、virtualbox での設定が正しければ接続できるはずです。
> ネットワーク設定の「アダプタータイプ」や NAT の設定を変更すれば動き出すかもしれません。
>
> > 残念ながらbuild.shで2つほどエラーが出て,肝心なA6E対応のコンテナが
> > インストールできませんでした.
> > エラーは
> > exec /bin/sh: exec format error
> > というものでした.
>
> このエラーは、arm のバイナリーを実行できないと言うエラーです。
> ATDE9 では qemu-user を設定して、emulation で実行できるようにしていますが、自分の OS の場合は設定する必要があります。
> qemu-user-static パッケージをインストールして、「update-binfmts --display | grep -i arm」で qemu-arm (enabled) が表示されることを確認していただければ、おそらく実行できるようになります。
>
> よろしくお願いします。

uenokatsutoshi

2023年10月2日 13時37分

古賀様
上野です。別のPCにATDE9をインストールし直して、コンテナも作成したところ、無事コンパイルができるようになりました。
ありがとうございました。

> 古賀様
> 上野です.お返事いただき,ありがとうございます.
> ホストOSをUbuntu studio 22.04としています.
> セキュリテイからみの制約でVMplayerがうまく動かないので,virtualbox上にATDE9
> をインストールしていますが,networkがうまく繋がりません.
> 同じvirtualboxに載せた他のOSではネットはちゃんとつながってはいます.
> 仕方がないのでUbuntuに直接dockerをインストールしてみました.
>
> ご教示いただいたフォーラムを参考にコンテナをビルドしてみました.
> 残念ながらbuild.shで2つほどエラーが出て,肝心なA6E対応のコンテナが
> インストールできませんでした.
> エラーは
> exec /bin/sh: exec format error
> というものでした.
>
> 後で別のpcでも試してみようと思います.
>
> buildできたコンテナは次のとおりでした.
> REPOSITORY TAG IMAGE ID CREATED SIZE
> alpine-3.16-x86_64 latest 7c9c63494d66 About a minute ago 210MB
> arm32v7/alpine 3.16 51610eda6112 7 weeks ago 3.79MB
> arm64v8/alpine 3.16 47a0d92d42c9 7 weeks ago 5.3MB
> amd64/alpine 3.16 187eae39ad94 7 weeks ago 5.54MB
>
>
> > アットマークテクノの古賀です。
> >
> > uenokatsutoshiさん:
> > >YoutubeのIoT A6に関する動画を参考に,ターゲット上でコンパイルできるようにしようと,
> > >apk add gcc
> > >apk add make
> > >を行い,gccとmakeをA6Eにインストールしました.
> > >しかしインクルードファイルが無いとのことで,コンパイルができませんでした.
> > >A6にあったbuild-essentialパッケージに相当するものがわかりません.
> > >
> > >>Armadillo 2?0で作成したシステムで用いていたCで書いたシリアル通信用プログラムを,
> > >>IoT A6Eにもインストールしようとしています.
> > >>当時と開発方法が大きく変わってしまったため,取っ掛かりがつかめずに往生しています.
> > >>
> > >>1 GCC系の開発環境の準備はどのようにすればよろしいでしょうか.
> > >>   ATDE3ではクロス開発環境が用意されていました.
> > >>   ATDE9ではどのようにすればよろしいでしょうか.
> > >>   あるいはVScodeでcのプログラムを作成するのでしょうか.
> >
> > Armadillo Base OS 上で直接実行するプログラムや、Armadillo Base OS がベースにしている Alpine Linux のコンテナで動作するプログラムをビルドするのは、ATDE 9 で開発環境入りの Alpine Linux コンテナを動かすのが簡単です。
> > このフォーラムの、こちらをご覧になってみてください:
> >  https://armadillo.atmark-techno.com/forum/armadillo/14009#comment-12363
> >
> > >>2 A6Eのcによる開発の参考となる資料はございませんか.
> > >>  ひとまずHello world の方法がわかると助かります.
> >
> > 上で紹介したコメントの最後の方にも書きましたが、Armadillo Base OS 上で Debian コンテナを作って Debian コンテナ内で実行するのであれば、ATDE 9 上で、armhf のクロスコンパイラ(arm-linux-gnueabihf-gcc)を使ってクロスビルドしたバイナリを使えます。
> >
> > 以上、参考になりましたら幸いです。