Armadilloフォーラム

libusbのコンパイルエラー

kihara

2016年4月13日 10時39分

木原です。
いつもお世話になっております。

libusbを使用する添付コードをATDEでクロスコンパイル出来ずに困っております。

以下のパッケージをインストールし

$ sudo apt-get install libusb-1.0-0-armhf-cross
$ sudo apt-get install libusb-1.0-0-dev-armhf-cross

コンパイルを実行したところ以下のエラーが出ました

$ arm-linux-gnueabihf-gcc hub-power2.c -o hub-power2
/tmp/ccM1kVb7.o: In function `main':
hub-power2.c:(.text+0x318): undefined reference to `libusb_init'
hub-power2.c:(.text+0x35c): undefined reference to `libusb_get_device_list'
hub-power2.c:(.text+0x38c): undefined reference to `libusb_get_device_descriptor'
hub-power2.c:(.text+0x3c4): undefined reference to `libusb_get_bus_number'
hub-power2.c:(.text+0x3e6): undefined reference to `libusb_get_device_address'
hub-power2.c:(.text+0x444): undefined reference to `libusb_open'
hub-power2.c:(.text+0x49c): undefined reference to `libusb_free_device_list'
hub-power2.c:(.text+0x4ac): undefined reference to `libusb_get_device'
hub-power2.c:(.text+0x4ba): undefined reference to `libusb_get_active_config_descriptor'
hub-power2.c:(.text+0x4f6): undefined reference to `libusb_free_config_descriptor'
hub-power2.c:(.text+0x500): undefined reference to `libusb_free_config_descriptor'
hub-power2.c:(.text+0x52c): undefined reference to `libusb_control_transfer'
hub-power2.c:(.text+0x5b2): undefined reference to `libusb_control_transfer'
hub-power2.c:(.text+0x5ee): undefined reference to `libusb_close'
hub-power2.c:(.text+0x5f6): undefined reference to `libusb_exit'
hub-power2.c:(.text+0x638): undefined reference to `libusb_close'
hub-power2.c:(.text+0x640): undefined reference to `libusb_exit'
collect2: ld returned 1 exit status

どうすればコンパイルできるでしょうか?ご教授願います。

ファイル ファイルの説明
hub-power2.c
コメント

takuya.murasugi

2016年4月13日 11時19分

村杉と申します。

コンパイルオプションに-lusb、又は-lusb-1.0を試してみてはどうでしょうか。

実行例:
arm-linux-gnueabihf-gcc hub-power2.c -o hub-power2 -lusb

同じような症状のサイトがありましたので、参考になると思います。
http://stackoverflow.com/questions/7050482/libusb-undefined-reference-to

以上

> 木原です。
> いつもお世話になっております。
>
> libusbを使用する添付コードをATDEでクロスコンパイル出来ずに困っております。
>
> 以下のパッケージをインストールし
>

> $ sudo apt-get install libusb-1.0-0-armhf-cross
> $ sudo apt-get install libusb-1.0-0-dev-armhf-cross
> 

>
> コンパイルを実行したところ以下のエラーが出ました
>

> $ arm-linux-gnueabihf-gcc hub-power2.c -o hub-power2
> /tmp/ccM1kVb7.o: In function `main':
> hub-power2.c:(.text+0x318): undefined reference to `libusb_init'
> hub-power2.c:(.text+0x35c): undefined reference to `libusb_get_device_list'
> hub-power2.c:(.text+0x38c): undefined reference to `libusb_get_device_descriptor'
> hub-power2.c:(.text+0x3c4): undefined reference to `libusb_get_bus_number'
> hub-power2.c:(.text+0x3e6): undefined reference to `libusb_get_device_address'
> hub-power2.c:(.text+0x444): undefined reference to `libusb_open'
> hub-power2.c:(.text+0x49c): undefined reference to `libusb_free_device_list'
> hub-power2.c:(.text+0x4ac): undefined reference to `libusb_get_device'
> hub-power2.c:(.text+0x4ba): undefined reference to `libusb_get_active_config_descriptor'
> hub-power2.c:(.text+0x4f6): undefined reference to `libusb_free_config_descriptor'
> hub-power2.c:(.text+0x500): undefined reference to `libusb_free_config_descriptor'
> hub-power2.c:(.text+0x52c): undefined reference to `libusb_control_transfer'
> hub-power2.c:(.text+0x5b2): undefined reference to `libusb_control_transfer'
> hub-power2.c:(.text+0x5ee): undefined reference to `libusb_close'
> hub-power2.c:(.text+0x5f6): undefined reference to `libusb_exit'
> hub-power2.c:(.text+0x638): undefined reference to `libusb_close'
> hub-power2.c:(.text+0x640): undefined reference to `libusb_exit'
> collect2: ld returned 1 exit status
> 

>
> どうすればコンパイルできるでしょうか?ご教授願います。
>

-lusb-1.0 オプションを付けることでコンパイル出来ました。
ありがとうございます。
しかしArmadillo側でライブラリが見つからず、動作エラーとなりました。

image作成で make romfs としたのですが、romfs/lib 内にはUSBのライブラリが
入っていないようです。
どのように対策すればよいでしょうか?

伊藤です。

atmark-dist/romfs/lib内に必要なライブラリが入らないのであれば、
直接ファイルコピーで追加すると良いです。

必要なライブラリのファイル名は、Armadillo上でコマンド実行時に
出るエラーで確認できます。