Pesquisa

Currículo e bio do autor Par de artigos relacionados ao meu hobby - robótica
Minhas impressões sobre a imigração para a Austrália. Somente em russo. Receitas para resolver os problemas cotidianos
Linux lugares ligados Janelas lugares ligados
Software lugares ligados Um monte de informações sobre hardware
Diferentes ferramentas podem ser úteis Mensagens sobre tecnologias web vários
Tudo o que não se encaixa no resto do menu RSS feed para este blog

Tag Cloud

Arquivo

Links

Blog do Andrey Mikhalchuk

English flagItalian flagKorean flagChinese (Simplified) flagPortuguese flagGerman flagFrench flagSpanish flagJapanese flagRussian flagDanish flagFinnish flagHebrew flag

Technoblog sobre a vida

3 de junho de 2009 Resolver libopenocd.so: undefined reference to `FT_GetLatencyTimer problema" durante a compilação openocd

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 .

Sem comentários

Nenhum comentário até o momento

Deixe uma resposta

Mapa do Site (C) Andrey Mikhalchuk, 2005-2008