Forum: PC-Programmierung [OpenPLC] Kompilieren schlägt fehl


von Matthias S. (da_user)


Lesenswert?

Hallo,

ich habe auf einem Linux-System mithilfe von Docker die OpenPLC-Runtime 
zum laufen gebracht.
Nun wollte ich ein erstes Programm basteln. Da der Rechner keine echten 
I/Os hat, habe ich mir das MQTT-Beispiel angesehen und dieses in 
angepasster Form in FUP nachgebaut.
Die Simulation wurde kompiliert, und ich konnte dann eine *.st-Datei 
erstellen und hochladen. Damit hatte dann aber die Runtime Probleme:
<code>
Generating C files...
./st_files/451874.st:3-21..3-32: error: invalid specification in 
variable declaration.
[...]
./st_files/451874.st:11-3..11-23: error: invalid variable before ':=' in 
ST assignment statement.
./st_files/451874.st:11-41..11-42: error: ';' missing at the end of 
statement in ST statement.
[...]
./st_files/451874.st:14-52..14-52: error: invalid statement in ST 
statement.

20 error(s) found. Bailing out!
Error generating C files
Compilation finished with errors!</code>

Ich habe dann festgestellt, dass im Projekt unter "Konfiguration" der 
Zieltyp auf "Win32" steht und habe diesen auf Linux umgestellt. Damit 
klappt dann aber das erstellen nicht mehr:
<code>Zeige build in D:\Eigene 
Dateien\Nextcloud\Documents\OpenPLC\SHC\build
Generiere SoftPLC IEC-61131 ST/AWL/AS Code...
    Collecting data types
    Collecting POUs
    Generate POU shc
    Generate Config(s)
Kompilliere IEC Programm zu c-Code...
Extrahiere gefundene Variablen...
C Code erfolgreich generiert.
SPS :
   [CC]  plc_main.c -> plc_main.o
D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c: In 
function 'PLC_SetTimer':
D:\Eigene 
Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c:180:30: error: 
'SIGUSR1' undeclared (first use in this function)
  180 |     pthread_kill(PLC_thread, SIGUSR1);
      |                              ^~~~~~~
D:\Eigene 
Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c:180:30: note: 
each undeclared identifier is reported only once for each function it 
appears in
D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c: In 
function 'PLCThreadSignalHandler':
D:\Eigene 
Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c:193:16: error: 
'SIGUSR2' undeclared (first use in this function)
  193 |     if (sig == SIGUSR2)
      |                ^~~~~~~
D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c: In 
function 'startPLC':
D:\Eigene 
Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c:359:16: error: 
'SIGUSR1' undeclared (first use in this function)
  359 |         signal(SIGUSR1, PLCThreadSignalHandler);
      |                ^~~~~~~
D:\Eigene 
Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c:361:16: error: 
'SIGUSR2' undeclared (first use in this function)
  361 |         signal(SIGUSR2, PLCThreadSignalHandler);
      |                ^~~~~~~
D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c: In 
function 'stopPLC':
D:\Eigene 
Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c:398:30: error: 
'SIGUSR2' undeclared (first use in this function)
  398 |     pthread_kill(PLC_thread, SIGUSR2);
      |                              ^~~~~~~
"gcc" -c "D:\Eigene 
Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c" -o "D:\Eigene 
Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.o" -O2  -fPIC 
-Wno-implicit-function-declaration -Wno-int-conversion 
"-IC:\Users\user\OpenPLC_Editor\matiec\lib\C" -w
Beendet mit Status 1 (pid 17948)
C Kompilierung von plc_main.c fehlgeschlagen.
C Build fehlgeschlagen.</code>

Kann mir jemand verraten, was hier schief läuft?

von Frank D. (Firma: LAPD) (frank_s634)


Lesenswert?

Scheinen wohl die includes für die SIG* zu fehlen.

von Jim M. (turboj)


Lesenswert?

Windows Compiler kennt keine Linux spezifischen Symbole.

Die Pfade mit Laufwerksbuchstaben gibt es nur unter Windows.

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.