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 . |