mikrocontroller.net

Forum: PC-Programmierung xc3sprog compilieren


Autor: Stephan S. (uxdx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach ein paar Jahren muss ich mal wieder einen CPLD programmieren, 
früher habe ich das immer unter Windows mit xc3sprog gemacht, aber 
xc3sprog will das auf dem Uralt-Windows-Rechner nicht mehr, warum auch 
immer.

Ich mache heute alles unter Linux, also xc3sprog unter Linux 
compilieren: Anleitung gelesen, mittels git runtergeladen, usblib 
installiert, libftdi installiert, usb.h besorgt, so wie unter 
https://github.com/matrix-io/xc3sprog beschrieben

Dann 'cmake .' und 'make'
uxdx@uxdx-ubuntu:~/xc3sprog$ cmake .
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE) 
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE) 
-- Could NOT find LIBFTD2XX (missing:  LIBFTD2XX_LIBRARIES LIBFTD2XX_INCLUDE_DIR) 
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE) 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/uxdx/xc3sprog
uxdx@uxdx-ubuntu:~/xc3sprog$ make
[  5%] Built target avrfuseparse
[  7%] Building CXX object CMakeFiles/xc3sproglib.dir/iowiringpi.cpp.o
/home/uxdx/xc3sprog/iowiringpi.cpp:3:22: fatal error: wiringPi.h: Datei oder Verzeichnis nicht gefunden
compilation terminated.
CMakeFiles/xc3sproglib.dir/build.make:286: die Regel für Ziel „CMakeFiles/xc3sproglib.dir/iowiringpi.cpp.o“ scheiterte
make[2]: *** [CMakeFiles/xc3sproglib.dir/iowiringpi.cpp.o] Fehler 1
CMakeFiles/Makefile2:289: die Regel für Ziel „CMakeFiles/xc3sproglib.dir/all“ scheiterte
make[1]: *** [CMakeFiles/xc3sproglib.dir/all] Fehler 2
Makefile:149: die Regel für Ziel „all“ scheiterte
make: *** [all] Fehler 2
uxdx@uxdx-ubuntu:~/xc3sprog$ 

Warum zum Teufel braucht xc3sprog wiringPi.h für den Raspberry?

Also pkgconf installiert, LIBFTDI2XX von FTDI besorgt, compilieren geht 
nicht:
uxdx@uxdx-ubuntu:~/libftd2xx/release/examples$ make -B
for n in BitMode EEPROM/erase EEPROM/read EEPROM/write EEPROM/user/read EEPROM/user/size EEPROM/user/write Events loopback LargeRead MultiThread SetVIDPID Timeouts W32/escapeseq W32/events W32/simple W32/timeouts; do "make" -C $n || exit 1; done
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/BitMode“ wird betreten
cc main.c -o bitmode -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib  
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/BitMode“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/erase“ wird betreten
cc main.c -o erase -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/erase“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/read“ wird betreten
cc main.c -o read -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/read“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/write“ wird betreten
cc main.c -o write -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/write“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/read“ wird betreten
cc main.c -o readua -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/read“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/size“ wird betreten
cc main.c -o sizeua -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/size“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/write“ wird betreten
cc main.c -o writeua -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/write“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/Events“ wird betreten
cc main.c -o events -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/Events“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/loopback“ wird betreten
cc main.c -o loopback -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
main.c:22:20: fatal error: ftd2xx.h: Datei oder Verzeichnis nicht gefunden
compilation terminated.
Makefile:9: die Regel für Ziel „loopback“ scheiterte
make[1]: *** [loopback] Fehler 1
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/loopback“ wird verlassen
Makefile:23: die Regel für Ziel „subdirs“ scheiterte
make: *** [subdirs] Fehler 1
uxdx@uxdx-ubuntu:~/

im Verzeichnis examples ist die ftd2xx.h jedoch vorhanden und hat die 
richtigen Rrechte.

Wat nu?

Hat jemand in letzter Zeit xc3sprog erfolgreich compiliert?

: Verschoben durch Moderator
Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan S. schrieb:
> make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/loopback“
> wird betreten
> cc main.c -o loopback -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath
> /usr/local/lib -L/usr/local/lib
> main.c:22:20: fatal error: ftd2xx.h: Datei oder Verzeichnis nicht
> gefunden

..

> im Verzeichnis examples ist die ftd2xx.h jedoch vorhanden

Gesucht wird sie aber im Verzeichnis ../examples/loopback

Wie wird sie eingebunden, mit <> oder mit ""? Wie sieht Dein 
include-Pfad aus?

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diese Version funktioniert:

https://github.com/buserror/xc3sprog

Autor: Stephan S. (uxdx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erst mal 'Danke' für die Hilfe, normalerweise geht das einfacher.

Nachdem ich jetzt die Files in die richtigen Verzeichnisse verschoeben 
habe bzw. den Tip von pegel getestet habe, läuft die compilierung von 
ftd2xx ohne Fehler durch.
uxdx@uxdx-ubuntu:~/libftd2xx/release/examples$ make -B
for n in BitMode EEPROM/erase EEPROM/read EEPROM/write EEPROM/user/read EEPROM/user/size EEPROM/user/write Events loopback LargeRead MultiThread SetVIDPID Timeouts W32/escapeseq W32/events W32/simple W32/timeouts; do "make" -C $n || exit 1; done
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/BitMode“ wird betreten
cc main.c -o bitmode -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib  
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/BitMode“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/erase“ wird betreten
cc main.c -o erase -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/erase“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/read“ wird betreten
cc main.c -o read -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/read“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/write“ wird betreten
cc main.c -o write -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/write“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/read“ wird betreten
cc main.c -o readua -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/read“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/size“ wird betreten
cc main.c -o sizeua -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/size“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/write“ wird betreten
cc main.c -o writeua -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/write“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/Events“ wird betreten
cc main.c -o events -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/Events“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/loopback“ wird betreten
cc main.c -o loopback -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/loopback“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/LargeRead“ wird betreten
cc main.c -o largeread -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/LargeRead“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/MultiThread“ wird betreten
cc main.c -o multi -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/MultiThread“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/SetVIDPID“ wird betreten
cc main.c -o setVIDPID -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/SetVIDPID“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/Timeouts“ wird betreten
cc main.c -o timeouts -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/Timeouts“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/escapeseq“ wird betreten
cc main.c -o w32_escapeseq -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/escapeseq“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/events“ wird betreten
cc main.c -o w32_events -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib  
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/events“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/simple“ wird betreten
cc main.c -o w32_simple -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib -g
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/simple“ wird verlassen
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/timeouts“ wird betreten
cc main.c -o w32_timeouts -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/timeouts“ wird verlassen
uxdx@uxdx-ubuntu:~/libftd2xx/release/examples$

Aber das compilieren von xc3sprog geht immer noch nicht:
uxdx@uxdx-ubuntu:~/xc3sprog$ cmake .
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.28") 
-- Checking for module 'libftdi'
--   Found libftdi, version 0.20
-- Found LIBFTDI: /usr/lib/x86_64-linux-gnu/libftdi.so  
-- Checking for module 'libftd2xx'
--   Package libftd2xx was not found in the pkg-config search path.
Perhaps you should add the directory containing `libftd2xx.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libftd2xx', required by 'world', not found
-- Could NOT find LIBFTD2XX (missing:  LIBFTD2XX_INCLUDE_DIR) 
-- Checking for module 'libusb'
--   Found libusb, version 0.1.12
-- Found LIBUSB: /usr/lib/x86_64-linux-gnu/libusb.so  
-- Configuring done
-- Generating done
-- Build files have been written to: /home/uxdx/xc3sprog
uxdx@uxdx-ubuntu:~/xc3sprog$ 

Die gesuchte Datei `libftd2xx.pc' gibt es nicht. Und was mache ich mit 
pkg-config, die manpage sagt mir nichts.

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was auch immer "world" ist, es geht auch ohne libftd2xx.
Aber du baust nicht im einen build Verzeichnis wie empfohlen.

git clone https://github.com/buserror/xc3sprog.git
cd xc3sprog/
mkdir build
cd build/
cmake ..
make

funktioniert bei mir unter ubuntu 16.04

Autor: Stephan S. (uxdx)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Wieder mal 'Danke', läuft jetzt durch (meckert aber immer noch wegen der 
fehlenden ftd2xx). build hatte ich natürlich, aber irgendwie dann 
übersehen.

Ha! jetzt geht's, Wackelkontakt am USB_Stecker entdeckt, xc3sprog läuft 
!!!

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.