Se você ousar construir openocd do tronco svn e sorte de ter um adaptador USB JTAG há uma boa chance que você vai ver algo como /bin/sh ../libtool --tag=CC --mode=link gcc -std=gnu99 -g -O2 -I/root/Distr/ftd2/libftd2xx0.4.16 -Wall -Wstrict-prototypes -Wformat-security -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -o openocd main.o libopenocd.la -ldl /root/Distr/ftd2/libftd2xx0.4.16/static_lib/libftd2xx.a.0.4.16 -lpthread libtool: link: gcc -std=gnu99 -g -O2 -I/root/Distr/ftd2/libftd2xx0.4.16 -Wall -Wstrict-prototypes -Wformat-security -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -o .libs/openocd main.o /root/Distr/ftd2/libftd2xx0.4.16/static_lib/libftd2xx.a.0.4.16 ./.libs/libopenocd.so -ldl -lpthread ./.libs/libopenocd.so: undefined reference to `FT_GetLatencyTimer' ./.libs/libopenocd.so: undefined reference to `FT_Close' ./.libs/libopenocd.so: undefined reference to `FT_SetBitMode' ./.libs/libopenocd.so: undefined reference to `FT_GetDeviceInfo' ./.libs/libopenocd.so: undefined reference to `FT_OpenEx' ./.libs/libopenocd.so: undefined reference to `FT_Read' ./.libs/libopenocd.so: undefined reference to `FT_SetTimeouts' ./.libs/libopenocd.so: undefined reference to `FT_SetVIDPID' ./.libs/libopenocd.so: undefined reference to `FT_Write' ./.libs/libopenocd.so: undefined reference to `FT_SetLatencyTimer' ./.libs/libopenocd.so: undefined reference to `FT_ListDevices' ./.libs/libopenocd.so: undefined reference to `FT_Purge'
Aqui está como consertar isso:
Se você observar atentamente as primeiras linhas do log você verá que a causa do problema é a saída libtool. Se você trocar manualmente. / .libs / Libopenocd.so e libftd2xx.a.0.4.16 no comando que vai funcionar muito bem. Passei algum tempo tentando consertar o script libtool defeituoso que vem com openocd, mas finelly percebi que eu sou preguiçoso demais para entender a lógica quebrada de almore 9000 de código de script shell e implementado, possivelmente, a mais estúpida que eu já tinha remendo feito. Então, para resolver o problema de script libtool aberta na árvore fonte openocd (NÃO a um in / usr / lib) e vá linha em algum lugar neare 8044. Você vai encontrar linhas como estas: *) new_libs="$new_libs $deplib" ;; esac done compile_deplibs="$new_libs" compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs"
Logo após estas linhas adicione esse código: if test x"$compile_command" = x"gcc -std=gnu99 -g -O2 -I/root/Distr/ftd2/libftd2xx0.4.16 -Wall -Wstrict-prototypes -Wformat-security -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -o @OUTPUT@ main.o /root/Distr/ftd2/libftd2xx0.4.16/static_lib/libftd2xx.a.0.4.16 ./.libs/libopenocd.so -ldl -lpthread"; then compile_command='gcc -std=gnu99 -g -O2 -I/root/Distr/ftd2/libftd2xx0.4.16 -Wall-Wstrict-prototypes -Wformat-security -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -o @OUTPUT@ main.o ./.libs/libopenocd.so /root/Distr/ftd2/libftd2xx0.4.16/static_lib/libftd2xx.a.0.4.16 -ldl -lpthread' fi
... Ou algo como as linhas acima, que representa adequadamente o seu layout fontes e versões. Corra make depois desse mod e tudo deve compilar apenas multa. Que era mudo. Mas funcionou! Oh, yeah, mais uma coisa. Se você vai ver também este erro: openocd.texi:12: @include `version.texi': No such file or directory.
em seguida, basta criar o arquivo doc / version.texi com este conteúdo: @set UPDATED 20 January 2009 @set UPDATED-MONTH January 2009 @set EDITION 0.1.0 @set VERSION 0.1.0
Ufff ... Espero que esteja a menos que eles vão implementar mais bugs neste excelente peça de software. Este post foi publicado em Hardware , Linux . |