Forum: Mikrocontroller und Digitale Elektronik Including von der libCurl bei einem esp-idf Projekt


von Maurice (maurice31)


Lesenswert?

Hallo!
Ich versuche gerade verzweifelt die libCURL Library in meinem ESP-IDF 
Projekt zuincluden. Ich habe an hand dieser Anleitung alles gemacht um 
die Bibliothek zubenutzen.
https://www.youtube.com/watch?v=tp4OC_kGMgU
Doch der #include <curl/curl.h> funktioniert trotzdem nicht.
Kann mir da jemand helfen oder ein anderes Tutorial zeigen(Da ich kein 
anderes finde)

Gruß Maurice

von DerEgon (Gast)


Lesenswert?

Maurice schrieb:
> Doch der #include <curl/curl.h> funktioniert trotzdem nicht.

Was heißt "funktioniert nicht"?

von Maurice (maurice31)


Lesenswert?

Ich habe alles soll gemacht wie im video, doch wenn ich sein eigenes 
Example builde dann kommt der Fehler:
[
C:/Espressif/esp-idf/testttest/main/testttest.c:9:10: fatal error: 
curl/curl.h: No such file or directory
#include "curl/curl.h"
          ^~~~~~~~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.
ninja failed with exit code 1]

: Bearbeitet durch User
von Mike R. (thesealion)


Lesenswert?

Da wirst du wohl die Library erst einmal korrekt auf deinem System / in 
deinem Projekt installieren müssen.

von Maurice (maurice31)


Lesenswert?

Das denke ich mir ja auch. Ich habe nur keine Ahnung wie.

von Martin H. (horo)


Lesenswert?

Maurice schrieb:
> Doch der #include <curl/curl.h> funktioniert trotzdem nicht.

Maurice schrieb:
> curl/curl.h: No such file or directory
> #include "curl/curl.h"

Was denn nun, "" oder <>?

von Maurice (maurice31)


Lesenswert?

Oh sorry, es steht #include "curl/curl.h". Habe gerade auch mal die 
andere Variante also mit <> getestet aber das funktioniert auch nicht 
dann kommt der selber fehlercode

: Bearbeitet durch User
von Martin H. (horo)


Lesenswert?

Maurice schrieb:
> curl/curl.h: No such file or directory

Wo befindet sich Dein "curl.h"?
- Ist es da, wo es sein soll - dann ist Deine build-Umgebung nicht 
richtig konfiguriert.
- Ist es nicht dort, dann solltest Du es dort hin installieren.

Maurice schrieb:
> Ich habe nur keine Ahnung wie.

Mein Standardspruch: „Lerne auf Deinen Füßen zu stehen, bevor Du 
versuchst zu rennen.” - Sorry, haben wir alle so gemacht.

von Maurice (maurice31)


Lesenswert?

Martin H. schrieb:
> Maurice schrieb:
>> curl/curl.h: No such file or directory
>
> Wo befindet sich Dein "curl.h"?
> - Ist es da, wo es sein soll - dann ist Deine build-Umgebung nicht
> richtig konfiguriert.
> - Ist es nicht dort, dann solltest Du es dort hin installieren.
>
Als nach meinen C-Kenntnissen nicht, also es ist nicht im Main-Ordner. 
Suche ich mir die curl.h Datei nun raus und packe sie dort hin... immer 
noch der gleicher Fehler.


> Maurice schrieb:
>> Ich habe nur keine Ahnung wie.
>
> Mein Standardspruch: „Lerne auf Deinen Füßen zu stehen, bevor Du
> versuchst zu rennen.” - Sorry, haben wir alle so gemacht.

Das ist ein guter Spruch aber wie soll ich stehen wenn ich noch 
niejemanden stehen gesehen habe. :)

von A. B. (funky)


Lesenswert?

welche ESP32 IDF Version benutzt du denn?
component.mk gibt es meines Wissens nach nicht mehr und das setzt jetzt 
auf CMake (zumindest seit 4.x)
Bei Espressif haben Anleitungen selten länger Bestand als 30 Tage ;) Da 
ändert sich alle Nase was


Du musst in deinem Projekt das Include Verzeichnis von libcurl angeben 
damit die Header gefunden werden und du musst die Sourcen hinzufügen 
damit der Compiler den Bums kompilieren kann.

von Maurice (maurice31)


Lesenswert?

A. B. schrieb:
> welche ESP32 IDF Version benutzt du denn?
> component.mk gibt es meines Wissens nach nicht mehr und das setzt jetzt
> auf CMake (zumindest seit 4.x)
> Bei Espressif haben Anleitungen selten länger Bestand als 30 Tage ;) Da
> ändert sich alle Nase was
>
Diese benutze ich gerade ESP-IDF v4.4.2-dirty

>
> Du musst in deinem Projekt das Include Verzeichnis von libcurl angeben
> damit die Header gefunden werden und du musst die Sourcen hinzufügen
> damit der Compiler den Bums kompilieren kann.
Hast du das von einem Tutorial oder wo könnte ich das genau nachlesen.
Aber danke für die tipps

von A. B. (funky)


Angehängte Dateien:

Lesenswert?

Hier mal ein Beispiel für eine CMakeLists.txt mit Espressif Syntax

message("Build components/common")
idf_component_register(SRCS "common_buffer.c"
                       INCLUDE_DIRS "include"
                       )

und angehängt die dazu passende Directory Struktur. Damit sollte es 
klarer werden


Das ist aber auch auf der Espressif Homepage erklärt
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system.html

Meine Erfahrung mit Espressif ist aber, das man sich nie sicher sein 
kann ob der Fehler bei einem selbst oder bei derem Gefrickel liegt. Das 
macht es gerade zu Beginn nicht einfacher

von Maurice (maurice31)


Lesenswert?

A. B. schrieb:
> Hier mal ein Beispiel für eine CMakeLists.txt mit Espressif Syntax
>
> message("Build components/common")
> idf_component_register(SRCS "common_buffer.c"
>                        INCLUDE_DIRS "include"
>                        )
>
> und angehängt die dazu passende Directory Struktur. Damit sollte es
> klarer werden
>
>
das habe ich jetzt auch versucht, jedoch finde ich bei der libcurl 
library kein curl.c file welches ich dort dann als Source angeben kann.

> Das ist aber auch auf der Espressif Homepage erklärt
> 
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system.html
>
das hilft mir schonmal jetzt muss ich nur gucken wie es hier geht
> Meine Erfahrung mit Espressif ist aber, das man sich nie sicher sein
> kann ob der Fehler bei einem selbst oder bei derem Gefrickel liegt. Das
> macht es gerade zu Beginn nicht einfacher

von Martin H. (horo)


Lesenswert?

Etwas Grundsatzdiskussion...

A. B. schrieb:
> Meine Erfahrung mit Espressif ist aber, das man sich nie sicher sein
> kann ob der Fehler bei einem selbst oder bei derem Gefrickel liegt. Das
> macht es gerade zu Beginn nicht einfacher

Deshalb sagte ich

Martin H. schrieb:
> Mein Standardspruch: „Lerne auf Deinen Füßen zu stehen, bevor Du
> versuchst zu rennen.” - Sorry, haben wir alle so gemacht.

Maurice schrieb:
> Das ist ein guter Spruch aber wie soll ich stehen wenn ich noch
> niejemanden stehen gesehen habe. :)

Soll heißen: SW-Entwicklung mit C beherrschen, also:
1. Ein hello_world für den PC schreiben oder ein blinky für den µC, z.B. 
Arduino-HW, aber ohne dessen High-Level-Funktionen zu nutzen, siehe:
- https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
- 
https://create.arduino.cc/projecthub/milanistef/introduction-to-bare-metal-programming-in-arduino-uno-f3e2b4
2. Wenn es läuft eine oder mehrere eigene Funktionen in main.c 
definieren, die irgendwas kontrollierbares machen (z.B. Stringlänge 
bestimmen oder einen Integerwert quadrieren), pille-palle vollkommen 
egal.
3. Diese Funktion(en) in eine eigene Source-Datei "meine_fkt.c" 
auslagern, Header "meine_fkt.h" dazu schreiben und alles linken.
4. Eine passende Makedatei kreieren incl. "make clean" etc.
5. Die o.g. Funktion(en) in eine eigene statische lib "meine_lib.a" 
(plus "meine_lib.h") packen und dagegen linken.
6. Das gleiche als shared (dynamic) lib "meine_lib.so".
7. Die lib irgendwo anders hin verschieben und trotzdem verwenden. Dabei 
den Unterschied zwischen #include"" und #include<> verstehen.

Ist in einer Woche erledigt, wenn Du jeden Abend ein-zwei Stunden damit 
verbringst. Laborbuch schreiben - was gemacht, warum geht es nicht, wie 
habe ich es gelöst - am Besten auf Papier mit reichlich Platz für 
spätere Kommentare, gerne mehrfarbig.

Ist alles nicht Maker-sexy (Shield kaufen, Sketch kopieren, lib.zip 
downloaden), aber wenn Du es kapiert hast, dann meisterst Du auch solche 
von A.B. beschriebenen Frickeleien, du weißt, wo Du suchen musst, wenn 
etwas nicht gefunden wird und wie man z.B. eigene "Rucksäcke" an eine 
Header-Datei anbaut.

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.