Si vous osez construire openocd à partir du tronc svn et la chance d'avoir un adaptateur USB JTAG il ya une bonne chance que vous verrez quelque chose comme /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'
Voici comment résoudre ce problème:
Si vous regardez attentivement les premières lignes du journal, vous verrez que la cause du problème est la sortie libtool. Si vous avez manuellement échanger. / .libs / Libopenocd.so et libftd2xx.a.0.4.16 dans la commande, il fonctionnera très bien. J'ai passé quelque temps à essayer de corriger le script libtool défectueux qui est livré avec openocd, mais finelly rendu compte que je suis trop paresseux pour comprendre la logique de la rupture Almore 9000 de code de script shell et mis en œuvre peut-être le plus stupide que j'aie jamais correctif fait. Donc, pour corriger le script libtool problème ouvert dans l'arborescence des sources openocd (pas celui dans / usr / lib) et aller quelque part en ligne neare 8044. Vous trouverez des lignes comme celles-ci: *) new_libs="$new_libs $deplib" ;; esac done compile_deplibs="$new_libs" compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs"
Juste après ces lignes, ajoutez ce 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
... Ou quelque chose comme les lignes ci-dessus que représenter adéquatement votre mise en page des sources et des versions. Exécutez make après ce mod et tout devrait très bien compiler. Cela était muet. Mais cela a fonctionné!! Oh, ouais, encore une chose. Si vous allez voir aussi cette erreur: openocd.texi:12: @include `version.texi': No such file or directory.
puis il suffit de créer le fichier doc / version.texi avec ce contenu: @set UPDATED 20 January 2009 @set UPDATED-MONTH January 2009 @set EDITION 0.1.0 @set VERSION 0.1.0
Ufff ... J'espère que c'est moins qu'ils mettront en œuvre plus de bugs dans cette pièce remarquable de logiciels. Ce poste est publié en matériel , Linux . |