Ricerca

Riprendere e bio dell'autore Paio di articoli legati al mio hobby - robotica
Le mie impressioni circa l'immigrazione in Australia. Solo in russo. Ricette per risolvere i problemi quotidiani
Relativi a Linux i messaggi Windows-correlati messaggi
Relative al software i messaggi Un sacco di informazioni su hardware
Diversi strumenti si potrebbe trovare utile Post su varie tecnologie web
Tutto ciò che non si adatta al resto del menu RSS feed per questo blog

Tag Cloud

Archivio

Link

Blog di Andrey Mikhalchuk

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

Technoblog sulla vita

3 giugno 2009 Solving libopenocd.so: undefined reference to `'FT_GetLatencyTimer problema durante la compilazione openocd

Se avete il coraggio di costruire OpenOCD da svn trunk e la fortuna di avere un adattatore USB JTAG c'è una buona probabilità si vedrà qualcosa di simile

/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'

Ecco come risolvere che:


Se si guarda con attenzione le prime righe del registro vedrete che la causa del problema è l'uscita libtool. Se si manualmente swap. / .libs / Libopenocd.so e libftd2xx.a.0.4.16 nel comando funzionerà bene. Ho trascorso qualche tempo a cercare di risolvere il copione difettoso libtool che viene fornito con openocd, ma finemente reso conto che io sono troppo pigro per capire la logica di rottura Almore 9000 del codice script di shell e realizzato forse la più stupida delle patch che avessi mai fatto. Quindi, per risolvere il problema aperto sceneggiatura libtool nell'albero dei sorgenti OpenOCD (NON quella in / usr / lib) e andare da qualche linea neare 8044. Troverete linee come queste:

*) new_libs="$new_libs $deplib" ;;
esac
done
compile_deplibs="$new_libs"
compile_command="$compile_command $compile_deplibs"
finalize_command="$finalize_command $finalize_deplibs"

Subito dopo queste linee aggiungere questo codice:

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

... O qualcosa del genere sopra le righe che rappresentano adeguatamente il layout fonti e versioni. Eseguire make dopo questo mod e tutto dovrebbe compilare bene. Che era muto. Ma ha funzionato!

Oh, sì, una cosa di più. Se si vedrà anche questo errore:

openocd.texi:12: @include `version.texi': No such file or directory.

poi basta creare il file doc / version.texi con questo contenuto:

@set UPDATED 20 January 2009
@set UPDATED-MONTH January 2009
@set EDITION 0.1.0
@set VERSION 0.1.0

Ufff ... spero che sia meno che non attueranno più bug in questo pezzo rilevante di software.

Questo post è pubblicato in Hardware , Linux .

Non ci sono commenti

Nessun commento finora

Lascia un commento

Mappa del sito (C) Andrey Mikhalchuk, 2005-2008