[Armadillo:05150] Re: ライブラリのコンパイル方法
mizo
email@hidden
2010年 5月 7日 (金) 14:00:13 JST
溝渕です。
佐原拓也 wrote:
> 1. libusbのクロス版を作成&インストール
> 2. libftdi Version 0.17をarmクロス用にmake&インストール
> 3. 自分のアプリをmake
> リンク時のオプションに-lftdiをつければいいはず。
>
> そして
> 3.で自分のアプリをmakeしたのですが、最初と同じエラーになりました。
> 元のリンク -lftdi2xx をコメントアウトし、-lftdiusb に変更したのですが、
> リンクのオプション設定が間違っていますでしょうか。
FT2232Hに対応したライブラリは2種類あります。
1. D2xx
2. libFTDI
1.はFTDIが公開している公式版のライブラリです。x86用のバイナリのみ配布し
ているためarmでは使用できないようです。2.はオープンソースライブラリで
す。ソースが公開されているため、arm用にビルド可能です。
1.と2.では、それぞれ関数に互換性が無いようです。エラーログに出ている
FT_Write()はD2xx用の関数なので、使用することができません。
以下のコマンドを入力すると、libFTDIにFT_Write()が含まれていないことがわ
かると思います。
[ATDE2]$ wget
http://www.intra2net.com/en/developer/libftdi/download/libftdi-0.17.tar.gz
[ATDE2]$ tar zxvf libftdi-0.17.tar.gz
[ATDE2]$ cd libftdi-0.17
[ATDE2]$ grep -r FT_Write .
libFTDIを使用する場合、FT_Write()はftdi_write_data()で代用することができ
ると思いますがいかがでしょうか?
以上です。
> Makefileの内容
> ここから
> # ROOTDIR=/usr/src/atmark-dist-20100310
> ifndef ROOTDIR
> ROOTDIR ?= ../atmark-dist-20100310
> endif
> ROMFSDIR =$(ROOTDIR)/romfs
> ROMFSINST= romfs-inst.sh
> PATH := $(PATH):$(ROOTDIR)/tools
> UCLINUX_BUILD_USER = 1
> include $(ROOTDIR)/.config
> LIBCDIR = $(CONFIG_LIBCDIR)
> include $(ROOTDIR)/config.arch
> EXEC = test
> OBJS = test.o
> all: $(EXEC)
> $(EXEC): $(OBJS)
> # $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS) -lftd2xx
> $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS) -lftdi
> clean:
> -rm -f $(EXEC) *.elf *.gdb *.o *~
> romfs:
> $(ROMFSINST) /bin/$(EXEC)
> %.o: %.c
> $(CC) -c $(CFLAGS) -o $@ $<
> ここまで。
>
> エラーは、最初と以下のように一緒です。
> email@hidden:~/test$ <mailto:email@hidden:~/test$> make
> arm-linux-gnu-gcc -L../atmark-dist-20100310/lib -o test test.o -lc
> -lgcc -lftdi
> test.o: In function `ae2_write_ana':
> test.c:(.text+0x40): undefined reference to `FT_Write'
> test.c:(.text+0x6c): undefined reference to `FT_Write'
> test.o: In function `ae2_write_decb':
> test.c:(.text+0x1b8): undefined reference to `FT_Write'
> test.c:(.text+0x1e4): undefined reference to `FT_Write'
> :上記と同じ繰り返し
> collect2: ld returned 1 exit status
> make: *** [test] エラー 1
> email@hidden:~/test$ <mailto:email@hidden:~/test$>
armadillo メーリングリストの案内