Forum: PC-Programmierung xc3sprog compilieren


von Stephan S. (uxdx)


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'
1
uxdx@uxdx-ubuntu:~/xc3sprog$ cmake .
2
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE) 
3
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE) 
4
-- Could NOT find LIBFTD2XX (missing:  LIBFTD2XX_LIBRARIES LIBFTD2XX_INCLUDE_DIR) 
5
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE) 
6
-- Configuring done
7
-- Generating done
8
-- Build files have been written to: /home/uxdx/xc3sprog
9
uxdx@uxdx-ubuntu:~/xc3sprog$ make
10
[  5%] Built target avrfuseparse
11
[  7%] Building CXX object CMakeFiles/xc3sproglib.dir/iowiringpi.cpp.o
12
/home/uxdx/xc3sprog/iowiringpi.cpp:3:22: fatal error: wiringPi.h: Datei oder Verzeichnis nicht gefunden
13
compilation terminated.
14
CMakeFiles/xc3sproglib.dir/build.make:286: die Regel für Ziel „CMakeFiles/xc3sproglib.dir/iowiringpi.cpp.o“ scheiterte
15
make[2]: *** [CMakeFiles/xc3sproglib.dir/iowiringpi.cpp.o] Fehler 1
16
CMakeFiles/Makefile2:289: die Regel für Ziel „CMakeFiles/xc3sproglib.dir/all“ scheiterte
17
make[1]: *** [CMakeFiles/xc3sproglib.dir/all] Fehler 2
18
Makefile:149: die Regel für Ziel „all“ scheiterte
19
make: *** [all] Fehler 2
20
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:
1
uxdx@uxdx-ubuntu:~/libftd2xx/release/examples$ make -B
2
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
3
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/BitMode“ wird betreten
4
cc main.c -o bitmode -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib  
5
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/BitMode“ wird verlassen
6
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/erase“ wird betreten
7
cc main.c -o erase -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
8
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/erase“ wird verlassen
9
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/read“ wird betreten
10
cc main.c -o read -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
11
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/read“ wird verlassen
12
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/write“ wird betreten
13
cc main.c -o write -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
14
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/write“ wird verlassen
15
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/read“ wird betreten
16
cc main.c -o readua -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
17
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/read“ wird verlassen
18
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/size“ wird betreten
19
cc main.c -o sizeua -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
20
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/size“ wird verlassen
21
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/write“ wird betreten
22
cc main.c -o writeua -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
23
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/write“ wird verlassen
24
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/Events“ wird betreten
25
cc main.c -o events -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
26
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/Events“ wird verlassen
27
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/loopback“ wird betreten
28
cc main.c -o loopback -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
29
main.c:22:20: fatal error: ftd2xx.h: Datei oder Verzeichnis nicht gefunden
30
compilation terminated.
31
Makefile:9: die Regel für Ziel „loopback“ scheiterte
32
make[1]: *** [loopback] Fehler 1
33
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/loopback“ wird verlassen
34
Makefile:23: die Regel für Ziel „subdirs“ scheiterte
35
make: *** [subdirs] Fehler 1
36
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 User
von Rufus Τ. F. (rufus) Benutzerseite


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?

von pegel (Gast)


Lesenswert?

Diese Version funktioniert:

https://github.com/buserror/xc3sprog

von Stephan S. (uxdx)


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.
1
uxdx@uxdx-ubuntu:~/libftd2xx/release/examples$ make -B
2
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
3
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/BitMode“ wird betreten
4
cc main.c -o bitmode -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib  
5
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/BitMode“ wird verlassen
6
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/erase“ wird betreten
7
cc main.c -o erase -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
8
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/erase“ wird verlassen
9
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/read“ wird betreten
10
cc main.c -o read -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
11
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/read“ wird verlassen
12
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/write“ wird betreten
13
cc main.c -o write -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
14
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/write“ wird verlassen
15
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/read“ wird betreten
16
cc main.c -o readua -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
17
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/read“ wird verlassen
18
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/size“ wird betreten
19
cc main.c -o sizeua -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
20
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/size“ wird verlassen
21
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/write“ wird betreten
22
cc main.c -o writeua -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
23
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/EEPROM/user/write“ wird verlassen
24
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/Events“ wird betreten
25
cc main.c -o events -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
26
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/Events“ wird verlassen
27
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/loopback“ wird betreten
28
cc main.c -o loopback -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
29
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/loopback“ wird verlassen
30
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/LargeRead“ wird betreten
31
cc main.c -o largeread -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
32
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/LargeRead“ wird verlassen
33
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/MultiThread“ wird betreten
34
cc main.c -o multi -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
35
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/MultiThread“ wird verlassen
36
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/SetVIDPID“ wird betreten
37
cc main.c -o setVIDPID -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
38
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/SetVIDPID“ wird verlassen
39
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/Timeouts“ wird betreten
40
cc main.c -o timeouts -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
41
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/Timeouts“ wird verlassen
42
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/escapeseq“ wird betreten
43
cc main.c -o w32_escapeseq -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
44
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/escapeseq“ wird verlassen
45
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/events“ wird betreten
46
cc main.c -o w32_events -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib  
47
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/events“ wird verlassen
48
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/simple“ wird betreten
49
cc main.c -o w32_simple -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib -g
50
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/simple“ wird verlassen
51
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/timeouts“ wird betreten
52
cc main.c -o w32_timeouts -Wall -Wextra -lftd2xx -lpthread -lrt -Wl,-rpath /usr/local/lib -L/usr/local/lib
53
make[1]: Verzeichnis „/home/uxdx/libftd2xx/release/examples/W32/timeouts“ wird verlassen
54
uxdx@uxdx-ubuntu:~/libftd2xx/release/examples$

Aber das compilieren von xc3sprog geht immer noch nicht:
1
uxdx@uxdx-ubuntu:~/xc3sprog$ cmake .
2
-- The C compiler identification is GNU 5.4.0
3
-- The CXX compiler identification is GNU 5.4.0
4
-- Check for working C compiler: /usr/bin/cc
5
-- Check for working C compiler: /usr/bin/cc -- works
6
-- Detecting C compiler ABI info
7
-- Detecting C compiler ABI info - done
8
-- Detecting C compile features
9
-- Detecting C compile features - done
10
-- Check for working CXX compiler: /usr/bin/c++
11
-- Check for working CXX compiler: /usr/bin/c++ -- works
12
-- Detecting CXX compiler ABI info
13
-- Detecting CXX compiler ABI info - done
14
-- Detecting CXX compile features
15
-- Detecting CXX compile features - done
16
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.28") 
17
-- Checking for module 'libftdi'
18
--   Found libftdi, version 0.20
19
-- Found LIBFTDI: /usr/lib/x86_64-linux-gnu/libftdi.so  
20
-- Checking for module 'libftd2xx'
21
--   Package libftd2xx was not found in the pkg-config search path.
22
Perhaps you should add the directory containing `libftd2xx.pc'
23
to the PKG_CONFIG_PATH environment variable
24
Package 'libftd2xx', required by 'world', not found
25
-- Could NOT find LIBFTD2XX (missing:  LIBFTD2XX_INCLUDE_DIR) 
26
-- Checking for module 'libusb'
27
--   Found libusb, version 0.1.12
28
-- Found LIBUSB: /usr/lib/x86_64-linux-gnu/libusb.so  
29
-- Configuring done
30
-- Generating done
31
-- Build files have been written to: /home/uxdx/xc3sprog
32
uxdx@uxdx-ubuntu:~/xc3sprog$

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

von pegel (Gast)


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

von Stephan S. (uxdx)


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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.