OpenOCD v0.8.0-dev コンパイル

--- 2013/10/20 追記 ----
pkg-configを入れ直すとconfigureが通るようになりました。
ただし、以下のWARNINGが出てFTDIデバイスのハイスピード非対応となってしまいます…。
checking for library containing ftdi_new... none required
checking for libftdi highspeed device support... no
configure: WARNING: You need a newer libftdi version (0.16 or later).
checking for libftdi FT232H device support... no
configure: WARNING: You need a newer libftdi version (0.20 or later).

------------------------

諸事情で2ヶ月半くらいOpenOCDをコンパイルしていなかった。自前でパッチを充てている部分もあるのであまり空けすぎるとパッチがあたらなくなるので、久しぶりにコンパイルしてみました。

今回は失敗(?)編です。
何がというと、妥協してコンパイル環境を変えてしまったのです。今まではCygwin(64bit版)でWindowsネイティブな実行ファイルを作る様にしていたのですが、libusbのパッケージチェックがコミットされて pkg-config が必要になったのですが、何故かCygwin上で期待した通りに動いてくれませんでした。

configureを実行すると、途中で以下のエラーを吐き出して処理が停止します。

./configure: line 4449: syntax error near unexpected token `0.23'
./configure: line 4449: `PKG_PROG_PKG_CONFIG(0.23)'

README.Windowsに MSYSの場合は pkg-config-lite を入れる様にと記載があるのですが、Cygwinでの方法は記載されていません。試しに、上記内容をそれぞれのフォルダに入れて実行してみましたが、結果は同じ。Cygwinでは pkg-config をパッケージとして落としてくる事もできるので、それでも試しましたが結果は変わらずでした。ちなみにversionは 0.28 でした。

configureの上記部分をコメントアウトし、それ以降を実行しても結局以下の部分で止まってしまいました。

./configure: line 14723: syntax error near unexpected token `LIBUSB1,'
./configure: line 14723: `PKG_CHECK_MODULES(LIBUSB1, libusb-1.0,'

試しにLinux(Ubuntu 12.04)上のクロスコンパイル環境で実行してみると先に進む気配があったので今回はLinuxでコンパイルすることにしました。

Linux上のクロスコンパイル環境ではHOMEディレクトリ下に libusb, libusb-1.0, libftdi, libftdi-1.0等を置いています。個別に何がインストールされるか確認したかったのでprefixをそれぞれユニークなディレクトリにしてインストールしていて、それに対するシンボリックリンクで1箇所にまとめています。なので、パッケージの検索先を PKG_CONFIG_PATH に設定しています。i686環境とx86_64環境では参照するパッケージが異なるので、configure時に指定しました。

$ ./configure --enable-maintainer-mode --disable-werror --disable-shard --enable-ft2232_libftdi --enable-ftdi --enable-jlink --enable-vsllink --enable-stlink --enable-ti-icdi --build=x86_64-linux-gnu --host=i686-w64-mingw32 CFLAGS="-m32 -I/home/jujurou/tools/i686/include" LDFLAGS="-L/home/jujurou/tools/i686/lib -lusb-1.0" PKG_CONFIG_PATH=/home/jujurou/tools/i686/lib/pkgconfig

これで一通りはコンパイルできます。
今回は必要最小限のパッチを充てての作成にしました。


libusb-0.1 はコンパイル済みの物を使用していて、パッケージファイルは同梱されていなかったので(当たり前か)、自分で他のファイル内容をまねて以下の様な感じに作りました。

File: libusb.pc
prefix=/home/jujurou/tools/i686/temp/libusb-1.2.6.0
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: libusb-1.2.6.0
Description: C API for USB device access from Linux, Mac OS X, Windows and OpenBSD/NetBSD userspace
Version: 1.2.6.0
Libs: -L${libdir} -lusb
Libs.private:
Cflags: -I${includedir}


【注意点】
Linuxのクロスコンパイル環境で作成した openocd.exe をWindows上で動かすと、Norton先生にウィルスと間違われて削除される。といった現象に何回かぶち当たっています。コンパイル内容を少し変更すると削除されなかったりするのですが、根本原因は不明です。私の環境ではNorton先生に openocd.exe は健全ですよ宣言を追加してるので、上記現象は出ないのですが、物置に置いてあるファイルを他の方の環境で実行された場合に発生する可能性があります。
スポンサーサイト

tag : OpenOCD

コメントの投稿

非公開コメント

黒ねこ時計 くろック D02
プロフィール

jujurou

Author:jujurou
運営HP:チャコの部屋
Twitter:jujurou

カレンダー
01 | 2017/02 | 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 - - - -
最新記事
最新コメント
カテゴリ
ユーザタグ

RaspberryPi ぺるけ Linux TRminiWatterPart4 トランジスタ式ミニワッター MPD イーサネットコンバータ OpenOCD DAC FON2405E buildroot FM3ペリフェラル BeagleBoneBlack library FM3評価ボード ODROID-U2 mingw OpenGL TL-WR700N Edison bitbake KiCad VMware シングル FM4 ミニワッター 6N6P 計測 

月別アーカイブ
ランキング

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter