Including von der libCurl bei einem esp-idf Projekt

OP #7179008
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
OP #7179026
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]
#7179065
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.
OP #7179071
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. :)
#7179118
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.
OP #7179131
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
#7179307
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
Angehängte Dateien:
OP #7181636
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
#7181826
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren