Suche

Lebenslauf und Bio des Autors Paar von Artikeln im Zusammenhang mit meinem Hobby - Robotik
Meine Eindrücke über die Einwanderung nach Australien. Nur auf Russisch. Rezepte für alltägliche Probleme zu lösen
Linux-bezogene Beiträge Windows-related posts
Software-related posts Eine Menge Infos über Hard-
Verschiedene Werkzeuge, die Sie nützlich finden könnten Beiträge zu verschiedenen Web-Technologien
Alles, was nicht passt, der Rest der Speisekarte RSS-Feeds für dieses Blog

Tag Cloud

Archiv

Links

Andrey Mikhalchuk Blog

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

Technoblog über das Leben

3. Juni 2009 Solving libopenocd.so: undefined reference to `FT_GetLatencyTimer 'Problem beim Kompilieren openocd

Wenn Sie bauen OpenOCD aus dem SVN Trunk und das Glück, einen USB-JTAG-Adapter haben, wagen es gibt eine gute Chance, Sie werden sehen, so etwas wie

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

Hier ist, wie man das beheben:


Wenn Sie bei den ersten paar Zeilen des Protokolls genau hinschauen werden Sie sehen, dass die Ursache des Problems die libtool-Ausgang ist. Wenn Sie manuell zu tauschen. / .libs / Libopenocd.so libftd2xx.a.0.4.16 und in der Befehlszeile es wird gut funktionieren. Ich verbrachte einige Zeit versucht, den fehlerhaften libtool-Skript, das mit OpenOCD kommt zu beheben, aber finelly klar, dass ich zu faul bin, um den zerbrochenen Logik der Almore 9000 von Shell-Skript-Code zu verstehen und möglicherweise die dümmste Patch, den ich je getan hatte implementiert. Also, das Problem offen libtool Skript in der OpenOCD-Source-Tree (nicht die in / usr / lib) zu beheben und gehen irgendwo neare Linie 8044. Hier finden Sie Zeilen wie diese:

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

Gleich nach dem diese Zeilen fügen Sie diesen Code:

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

... Oder so etwas wie den obigen Zeilen angemessen zu vertreten, dass Ihre Quellen und Layout-Versionen. Führen Sie machen nach dieser Mod und alles sollte kompilieren just fine. Das war dumm. Aber es hat funktioniert!

Ach ja, eins noch. Wenn Sie auch folgende Fehlermeldung angezeigt:

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

dann erstellen Sie einfach Datei doc / version.texi mit diesem Inhalt:

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

Ufff ... Ich hoffe, das ist es, wenn sie nicht mehr Bugs in diesem herausragenden Stück Software implementieren wird.

Dieser Beitrag erscheint in Hardware , Linux .

Noch keine Kommentare

Bisher keine Kommentare

Lassen Sie eine Antwort

Site Map (C) Andrey Mikhalchuk, 2005-2008