ホームページmini2440>その3・MacでのQtクロス開発はできるかも??

その3・MacでのQtクロス開発はできるかも??

目次
 はじめに

 長らく放置状態にあった!mini2440ですが、いくつかの事情が重なってふと思い出し、そういえば前回の試行から3年半経過しているし、何か新展開とかあるかも、と軽い気持ちで再開したら、(結局いつものパターンですが)深みに嵌ってしまい(笑)、それでも幾らかの進展はありましたので、記しておくことにしました。

 なお、検証マシンはMac mini mid 2010、OSは10.11.1です。
 また、各バージョンは試行時のもので、最新版とは異なる場合があります。


 テスト環境の確保

 まずは、これ迄の問題点をおさらいしておきます。
 なので、恒例ですがキーワードを適当に見繕ってググった結果、早くも以下のサイトがヒットしました。

 参考サイト(1):ARM Cross Compiling with Mac OS X | Wel!s Blog(補足サイト:Illuminux/arm-cross-sysroot · GitHub

 こちらによれば、BeagleBoneとRaspberry Piについては、環境構築が可能とのことです。
 これで一気に可能性が見えてきましたので、掲載されている4つ(と補足サイトの1つ)のツールチェーンを全て試してみましたが、いずれも実機では動きませんでした。
(実験に使用したソースとビルドコマンドは、共に参考サイト(1)のHello Worldを使用。)
 どうもCPUのアーキテクチャの違いが関係しているようでした。(BeagleBone:Cortex-A8、Raspberry Pi:ARMv6Z、mini2440:ARMv4T)
 再度、ググりまくった結果、以下のサイトに行き着きました。

 参考サイト(2):Available ARM GNU Linux G++ Lite Builds for Mac OS X - Carlson-Minot Inc.

 mini2440の発売時期を考慮して2011.09-70版を選び、試してみたところ、動きませんでした。
 ですが、参考サイト(1)のツールチェーンとはエラーの質が違ったので、さらに調べたところ、参考サイト(2)のツールチェーンはARMv5TEに対応していることが分かりました(経緯の詳細は失念しましたが、-vオプションで確認できます)。ARMv4Tとは一世代しか違いません。
 またもググった結果、gccにはアーキテクチャを指定するためのパラメータ(-march)があることを知りました。
 そこで、「-march=armv4t」を追加してやったところ、…、無事動作しました。\(^^)/

 ツールチェーンが確保できれば、参考サイト(1)の、以降のステップに進むことができます。
 以下、順を追って試してみることにします。


 Advanced Sysroot

 Advanced Sysrootは、クロス開発に必要なライブラリの類をひとまとめに構築して準備しておく、というもののようです。
 量は相当なもので、中にはQtも含まれているます。
 基本的には手順通りに進めていくだけですが、前準備として以下の手続きが必要でした。
 Config.cfgは、TOOLCHAIN_DIRとTARGETを上述のツールチェーンに変更しました。
 実行すると、まずは前段階として様々なツール類が導入されますが、足りないものがあれば指示が出ますので従います。これが済むと、ライブラリの構築が始まるわけですが、途中で止まってしまいました。

 とりあえずliblzmaは、xz-5.1.4betaが存在しないのでxz-5.2.2に変更することで通りました。
 が、glib以降は参照先が見つからないといったような内容で、ツールチェーンを変更したことや、原作者の環境と(おそらく)同一でないことが影響しているのかもしれません。
 簡単には解決できそうにない感触だったので、ひとまずここで終了としました。


 eclipse CDT

 基本的には手順通りに進めていくだけですが、eclipseに慣れていなこともあってもたつきましたので、メモを。
 ツールチェーンのテストに用いたHello Worldを記述/ビルドして動くことを確認しました。まぁ、手作業でビルドしたものが動いているので当たり前と言えば当たり前ですが、作りやすさは全然違うので意味はあると言えます。


 Qt

 Qtのビルドも試してみましたが、案の定というか、ビルドできませんでした。

 エラーログを見ると、X11関係のライブラリがないというのが直接原因のようですが、そのX11関係のライブラリがビルドでエラーになってしまうので、なんともしようがありません。
 Advanced Sysrootの他のライブラリ同様、簡単には解決できそうにない感触だったので、ひとまずここで終了としました。
実は、qt-everywhere4.shのパラメータを一部書き換えてやると、Qtのビルドが完了することは確認済だったりします。
さらに、Qt Creatorで作った簡単なアプリが、ビルドできることも確認済だったりします。
ただし、相当無理な変更なので、バイナリがまともに動かない可能性の方が高いです。
可能性もなにも、実機で試せば簡単に検証できるだろう、と思われるかもしれませんが、以下のようなエラーが出て止まってしまいます。
[root@FriendlyARM /sdcard]# ./test1
./test1: /lib/libc.so.6: version `GLIBC_2.10' not found (required by /usr/local/Qt4.8.6-arm/lib/libQtNetwork.so.4)
実行ファイルとmini2440のライブラリの版数が合っていないような印象ですが、何れにしても一筋縄ではいかない、ということでしょうか。
 注)その後再トライを行った結果、MacでのQtクロス開発は可能であることが確認できました。
 その3a・MacでのQtクロス開発できた


 おわりに

 ツールチェーンが動いたとはいえ、ごくシンプルなコードしか試していないので、実用レベルのアプリがビルドできるかどうかは、まだ未知数です。
 依然としてQtが使えないのも残念です。(>その3a・MacでのQtクロス開発できた
 また、eclipseはGUIアプリの作成にも対応しているようですが、mini2440側にライブラリが用意されているか、版数の互換性は大丈夫か等、チェックすべき項目は山のようにありますので、こちらも大変そうです。
 一方、mini2440側にフルセットのLinuxをインストールすることも考えられます(以下のサイト参照)が、これはこれで新たな問題が発生するかもしれません。

 参考サイト(3):mini2440にDebian環境をインストール

 いずれにしても、以前よりはずっと可能性が高まりましたので期待したいところですが、結局、試行錯誤の嵐になってしまう(しかも報われる保証はない)のは目に見えているで、ちょっと躊躇しています。
ライブラリの類は、試行錯誤の過程で様々な出自のものが重複してインストールされる可能性があるので、OSをクリーンインストールしたオリジナルパーティションと、作業用パーティション(何かあったら潰して、オリジナルから復元)を持つ、独立したディスクを用意した方がいいのかもしれません。とは言っても、そんな余裕はないんですが…

 お世話になったサイト

 有用なソフトウェアおよび貴重な情報をご提供頂いている皆様に、お礼申し上げます。(以下、順不同)

 参考サイト(1):ARM Cross Compiling with Mac OS X | Wel!s Blog(補足サイト:Illuminux/arm-cross-sysroot · GitHub
 参考サイト(2):Available ARM GNU Linux G++ Lite Builds for Mac OS X - Carlson-Minot Inc.
 参考サイト(3):mini2440にDebian環境をインストール


 更新履歴

 2016.02.10 「追補・Qtその後」「追補・Qtその後のその後(成功)」を別ページに移動し、「Qt」「おわりに」にリンクを追加。
 2016.01.14 「追補・Qtその後のその後(成功)」に追記を追加。
 2016.01.02 「追補・Qtその後のその後(成功)」を追加
 2016.01.02 タイトルを一部変更
 2015.12.15 「追補・Qtその後」を追加
 2015.11.18 新規作成


[Home]  [MacSoft]  [Donation]  [History]