Armadilloフォーラム

libusb追加パッケージをatmark-distへ組み込むには

funayama

2014年6月11日 13時12分

お世話になっております。

libusbをATDE3にインストールできたのですが、
atmark-distへの組込み方をご教授ください。
よろしくお願いいたします。
libusbパッケージは下記の通り。

atmark@atde3:~/xlibusb$ dpkg -l | grep libusb
ii  libusb-0.1-4                2:0.1.12-13     userspace USB programming library
ii  libusb-0.1-4-armel-cross    2:0.1.12-13     userspace USB programming library (for cross
ii  libusb-dev-armel-cross      2:0.1.12-13     userspace USB programming library developmen
コメント

中村です。

> libusbをATDE3にインストールできたのですが、
> atmark-distへの組込み方をご教授ください。

atmark-distへの組込み方というよりも、romfsへの組み込み
(Armadillo本体へ書き込むフラッシュイメージへの組み込み)
でしょうか?

http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-2…
の中の
7.5.2.2. romfsターゲット
の後半、"lib-inst.sh"の説明は参考になりませんか?

ようするに、ATDE3に入れてあるクロスのライブラリは
atmark-distの下でmake(あるいはmake romfs)をすると、
lib-inst.shによって自動でromfsに入りますよ、という
ことなんですが・・・・
(ただし、「注意: 自動でインストールされないライブラリ」に
書いてあるように自動でインストールできないケースもあります)

中村さん

お世話様です。
質問が遠まわしになってしまい申し訳ありません。

今実行時の現象として下記のエラーが発生しています。

[root@armadillo440-0 (ttymxc1) ~]#hoge
hoge: error while loading shared libraries: libusb-0.1.so.4: cannot open shared object file: No such file or directory
[root@armadillo440-0 (ttymxc1) ~]#

libusbライブラリをインストールし、アプリをmake、make romfsし
atmark-distでmake imageを行っています。

romfsにライブラリモジュールが取り込めておらず、何らかの方法が必要だと思った次第です。

マニュアルの記述にある /usr/arm-linux-gnueabi/lib にはlibusb-0.1.so.4 が存在しておりました。
※atmark-dist/romfs/lib には存在しておりませんが関係ないでしょうか

プログラムで動的にロードしているつもりはありません。
libusbの使い方として、実行時にロードして使用するものという理解でよろしいのでしょうか。

ちなみにプログラムでは下記のようなことしかまだ行っておりません。

struct usb_bus *USB_init()
{
    usb_init();
    usb_find_busses();
    usb_find_devices();
    return(usb_get_busses());
}
 
main(){
      USB_init();
     ・
      USB_find(bus,dev);
            ・
      USB_open(dev);
     ・
      USB_close(dev);
}

もし、romfs-inst.shが必要であれば、どのように使うのかご教授ください。
よろしくお願いいたします。

お世話になっております。

アプリケーションプログラムの実行エラーが無くなり動作できるようになりました。

前回記載したビルド手順のところですが、手順が不足しておりました。
> libusbライブラリをインストールし、アプリをmake、make romfsし
> atmark-distでmake imageを行っています。

追加ライブラリをromfsに取り込むには
# libusbライブラリをインストールし、アプリをmake、make romfsし
# atmark-distで、make romfs 、make image
を行ったところ、
atmark-dist/romfs/lib に組み込まれました(関係大有りでした)。

手順の最初が抜けているので補足します。ライブラリをインストール後
atmark-distで、make clean、make、make romfs
では追加ライブラリをromfsに組みこむことは出来ませんでした。

アプリを組み込んだ後、つまり、
アプリ側でmake romfsを行った後で、atmark-distに移動しmake romfs
を行うことで組み込まれました。
マニュアルの「動的ロード」の意味がやっとわかった気がします。

お騒がせ致しました。

中村です。

> アプリケーションプログラムの実行エラーが無くなり動作できるようになりました。

私の説明も中途半端でしたが、ご自身で解決できてよかったです。

> アプリを組み込んだ後、つまり、
> アプリ側でmake romfsを行った後で、atmark-distに移動しmake romfs
> を行うことで組み込まれました。

はい。そのとおりです。

2度目のatmark-distでのmake romfs の出力メッセージをよくみると、
今回の場合なら「libusbをインストールした」というような表示があるので、
それを確認するのがいいと思います。

中村です。

うっかり大事なことを忘れて間違いを書いてましたので、訂正します。

> ようするに、ATDE3に入れてあるクロスのライブラリは
> atmark-distの下でmake(あるいはmake romfs)をすると、
> lib-inst.shによって自動でromfsに入りますよ、という

この引用の2行目に間違いがありました。
最近のatmark-distではmakeはNGです。
make(つまりmake all)するとromfs構築前にromfsの下を全部消していますので、
out-of-treeからromfsに入れたものも消えます。

詳しいことは、MLのときに書いたこれを見てください。
[Armadillo:09203] Re: 製品アップデート: 2013年7月
http://lists.atmark-techno.com/pipermail/armadillo/2013-September/00920…

--
なかむら

中村さん

ありがとうございました。

おかげ様で、その後デバイスを見つけることができopen、closeが正常にできました。