C++ REST client Library (Linux aarch64) Verständnis Problem
-
Curl ist unter anderem auch ein Konsolen Programm. Gehe mal in deine Linux console und gib z.B.
curl www.google.com
ein. (Mitwhich curl
siehst du auch, dass es vermutlich in usr/bin oder so liegt)Du kannst eben auch von der Konsole aus Web Requests machen.
Curl gibt aber eben auch als Library-> https://github.com/curl/curl
Du solltest libcurl über deinen Package Manager installieren, sofern nicht bereits vorhanden. Für Debian wäre das z.B. https://packages.debian.org/search?keywords=libcurl3-gnutls
Zu deiner Frage, ob man einfach libcurl.a (Bzw. eher libcurl.so, da es ne shared library sein wird) einfach per target_link_libraries (nicht per add_library) einbinden kann: Ja! Aber tue es nicht!!!
Um eine Library zu nutzen, brauchst du im zweifelsfall mehrere Sachen:
- Die Library selbst, daher die .a oder die .so Datei
- Die Header Files der Library
- Ggf. noch Libraries, welche deine Library benötigt etc.
Das könnte irgendwie so aussehen:
target_link_libraries(MyTarget pfad/auf/meinemSystem/libcurl.so andere/lib/die/von/curl/benötigt/wird) target_include_directories(MyTarget /pfad/zu/curl/include/directories)
evtl. benötigt curl noch irgendwelche speziellen anderen compiler flag oder definitions, dann:
add_target_definitions(MyTarget ...) add_compile_options(MyTarget ...)
Disclaimer: In Falle von curl und Linux handhabt sich das etwas einfacher, weil halt shared libraries und include Verzeichnisse in Standard Verzeichnissen liegen und deswegen im zweifelsfall sogar ein
target_link_libraries(MyTarget libcurl.so)
ausreichen würde.CMake hat dafür "Targets". Das ist quasi eine Abstraktion davon. Ein Target is eine Library / Executable mit allen diesen Informationen gebündelt (wenn man es richtig gemacht hat). Mit
add_library
definierst du z.B. ein target, mitadd_target_link_libraries
fügst du Libraries zum Target hinzu.
Du hast die Möglichkeit bei den meisten Befehlen eine Visibility anzugeben, um "Vererbung zu erlauben"target_link_Libraries(A PUBLIC B PRIVATE C) target_link_libraries(D PRIVATE A) # D hat jetzt A und B (vererbt), aber nicht C!
Targets machen also alles leichter, cross plattform und CMake einigermaßen schön zu nutzen. Deswegen nutze sie!
Wie kommst du jetzt an ein CMake Target?
Eine Möglichkeit hatte ich dir schon vorgestellt mit FetchContent.
Die andere, bei der du Curl auf deinem System verwendest, ist find_package.
Wie funktioniert find_package?
Möglichkeit 1 (Best Case): Die Library selbst stellt ein spezielles CMake File mit dem Namen <package>Config.cmake und dieses liegt dann auf deinem System und enthält die Target Definitionen etc.
Möglichkeit 2 (Doof): Du selbst schreibst ein Find<Package>.cmake Skript, was möglichst cross plattform Logik enthält, um eine Library zu suchen und daraus ein Target zu erstellen. => Im zweifelsfall sucht man natürlich nach nem bereits geschriebenen skript von irgendjemanden auf github oder so.
Möglichkeit 3 (Auch Okay): CMake hat selbst ein Find<Package>.cmake geschrieben und stellt es dir automatisch zur Verfügung.
Für bekannte Sachen gibt es oft 1 oder 3. Im Falle von Curl: https://cmake.org/cmake/help/latest/module/FindCURL.html
Daher mache ein
find_package(CURL REQUIRED)
oderfind_package(CURL COMPONENTS UnixSockets HTTP2 REQUIRED)
(Falls du irgendwelche speziellen extras brauchst).CMake wird dann nach curl auf deinem System suchen in Standard Pfaden etc. und falls erfolgreich (ansonsten gibt es ne schöne Fehlermeldung) dir ein Target
CURL::libcurl
zur Verfügung stellen.Das heißt hier ungefähr der Code den du brauchst:
find_package(CURL REQUIRED) add_executable(MeinTarget) target_sources(MeinTarget PRIVATE main.cpp Foo.cpp Bar.cpp) # Deine sources halt target_link_libraries(MeinTarget PRIVATE CURL::libcurl)
-
puhh... da muss ich mich wohl erst mit beschäftigen
@Leon0402 sagte in C++ REST client Library (Linux aarch64) Verständnis Problem:
Daher mache ein find_package(CURL REQUIRED) oder find_package(CURL COMPONENTS UnixSockets HTTP2 REQUIRED) (Falls du irgendwelche speziellen extras brauchst).
WEnn ich find_package in mein cmakeLists eintrage und ausführe kommt:
[cmake] CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message): [cmake] Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR) [cmake] Call Stack (most recent call first): [cmake] /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE) [cmake] /usr/share/cmake-3.10/Modules/FindCURL.cmake:48 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) [cmake] CMakeLists.txt:66 (find_package) [cmake]
Curl an sich is ja installiert:
curl --version curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3 Release-Date: 2018-01-24 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL
hmm ich sehe schon mit meinen skill komm ich nicht weiter:)
-
Du must auch die entsprechenden "dev" packete installieren.
-
@firefly sagte in C++ REST client Library (Linux aarch64) Verständnis Problem:
Du must auch die entsprechenden "dev" packete installieren.
hab ich , sonst würde Curl nicht funktionieren!?.. hmmm oder soll ich explizt das dev von der curl download page nochmal installieren,!?
-
Nein für die verwendung brauchst du die "dev" pakete nicht.
Wenn du das curl paket installierst werden nur die binaries installiert um das programm nutzen zu können.
Aber nicht die developer files (wie header und co) um ein programm zu bauen, welches libcurl verwendet
-
@SoIntMan sagte in C++ REST client Library (Linux aarch64) Verständnis Problem:
@firefly sagte in C++ REST client Library (Linux aarch64) Verständnis Problem:
Du must auch die entsprechenden "dev" packete installieren.
hab ich , sonst würde Curl nicht funktionieren!?.. hmmm oder soll ich explizt das dev von der curl download page nochmal installieren,!?
Welche Linux Distro hast du? Warum nutzt du nicht den package Manager?
-
@Leon0402 sagte in C++ REST client Library (Linux aarch64) Verständnis Problem:
Welche Linux Distro hast du? Warum nutzt du nicht den package Manager?
verwendet Ubuntu 18.04 -... hier bekomm ich auch nur cmake 3.10.2...
verwendet atp als pacakge manager
EDIT :
sick@ubuntu:~$ sudo apt-get install -y libcurl-dev Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Paket libcurl-dev ist ein virtuelles Paket, das bereitgestellt wird von: libcurl4-openssl-dev 7.58.0-2ubuntu3.16 libcurl4-nss-dev 7.58.0-2ubuntu3.16 libcurl4-gnutls-dev 7.58.0-2ubuntu3.16 Sie sollten eines explizit zum Installieren auswählen. E: Für Paket »libcurl-dev« existiert kein Installationskandidat. sick@ubuntu:~$ ^C sick@ubuntu:~$
bin mir oft nich sicher was ich da mache.. aber das klappte auch nich
-
Hast du die Meldung gelesen? Du sollst eins explizit auswählen (ich nutze das letzte "libcurl4-gnutls-dev").
-
@Jockelx sagte in C++ REST client Library (Linux aarch64) Verständnis Problem:
Hast du die Meldung gelesen? Du sollst eins explizit auswählen (ich nutze das letzte "libcurl4-gnutls-dev").
ja sorry das hab ich dann auch so gemacht:)
sudo apt-get install -y libcurl4-gnutls-dev
dann hat er was installiert...
und mit meinen begrenzten linux kenntnisse mal dann das gemacht
sudo apt-cache show curl
damit müsste er mir doch zeigen was er alles im packagemanager an libs mit den name curl hat:
Package: curl Architecture: amd64 Version: 7.58.0-2ubuntu3.16 Multi-Arch: foreign Priority: optional Section: web Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Alessandro Ghedini <ghedo@debian.org> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 388 Depends: libc6 (>= 2.17), libcurl4 (= 7.58.0-2ubuntu3.16), zlib1g (>= 1:1.1.4) Filename: pool/main/c/curl/curl_7.58.0-2ubuntu3.16_amd64.deb Size: 158796 MD5sum: e5df9d6d7dc54ec5e638590d284fe352 SHA1: 7e182b6ae08d60b324fca717345579113105aaf6 SHA256: 50bfe5c8151aa26d0d096166765fceaba1f6044614d343e0d89fc31222b6a5be SHA512: 55a49db12b720402b91f71e248664763b5fe573147bce7ea891b735a4513b60a3830c00571c435ffc80339f340cdb615d79705fa0bdf39bced48946189dc697f Homepage: http://curl.haxx.se Description-de: Befehlszeilenwerkzeug zur Dateiübertragung mit URL-Syntax curl ist ein Befehlszeilenwerkzeug zur Dateiübertragung mit URL-Syntax. Es unterstützt DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET und TFTP. . curl unterstützt SSL-Zertifikate, HTTP POST, HTTP PUT, Hochladen zu FTP, Hochladen von HTTP-Formularen, Proxys, Cookies, Benutzerauthentifizierung mit Name und Passwort (einfach, verschlüsselt (Digest), NTLM, Negotiate, Kerberos), Wiederaufnahme von Dateiübertragungen, tunneln von HTTP-Proxys und jede Menge weitere nützliche Tricks. Description-md5: f83293d10df083ae6f7bb7d01642913c Task: cloud-image, server, ubuntu-budgie-desktop Supported: 5y Package: curl Architecture: amd64 Version: 7.58.0-2ubuntu3 Multi-Arch: foreign Priority: optional Section: web Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Alessandro Ghedini <ghedo@debian.org> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 386 Depends: libc6 (>= 2.17), libcurl4 (= 7.58.0-2ubuntu3), zlib1g (>= 1:1.1.4) Filename: pool/main/c/curl/curl_7.58.0-2ubuntu3_amd64.deb Size: 158884 MD5sum: 43f1eab4dcfdaab2d4b9f8ade5b5c58e SHA1: 5878faa881e0b475d3a6870b47423b0f0304a530 SHA256: 02c53c28334b2c6b1aa9643ae585744ee90ce113fbb7699f9607e38e82b9d526 Homepage: http://curl.haxx.se Description-de: Befehlszeilenwerkzeug zur Dateiübertragung mit URL-Syntax curl ist ein Befehlszeilenwerkzeug zur Dateiübertragung mit URL-Syntax. Es unterstützt DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET und TFTP. . curl unterstützt SSL-Zertifikate, HTTP POST, HTTP PUT, Hochladen zu FTP, Hochladen von HTTP-Formularen, Proxys, Cookies, Benutzerauthentifizierung mit Name und Passwort (einfach, verschlüsselt (Digest), NTLM, Negotiate, Kerberos), Wiederaufnahme von Dateiübertragungen, tunneln von HTTP-Proxys und jede Menge weitere nützliche Tricks. Description-md5: f83293d10df083ae6f7bb7d01642913c Task: cloud-image, server, ubuntu-budgie-desktop Supported: 5y
aber das is die command-curl anwendung ode !? (die verwendet libcurl we ich sehe? aber wie finde ich die, bzw.
we referenzier ich mich mit cmake auf die libcurl (die irgendwo sein muss!?!)wenn ich dann dann das dateilsystem mach "curl" suche (k.a. ob das so richtig is):
find ./ -name *curl*
komm das
./cmake-3.20.0/Utilities/cmcurl ./cmake-3.20.0/Utilities/cmcurl/include/curl ./cmake-3.20.0/Utilities/cmcurl/include/curl/curlver.h ./cmake-3.20.0/Utilities/cmcurl/include/curl/curl.h ./cmake-3.20.0/Utilities/cmcurl/CMake/curl-config.cmake.in ./cmake-3.20.0/Utilities/cmcurl/curltest.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_gethostname.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_des.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_gssapi.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_printf.h ./cmake-3.20.0/Utilities/cmcurl/lib/libcurl.rc ./cmake-3.20.0/Utilities/cmcurl/lib/curl_setup.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_ntlm_core.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_sspi.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_base64.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_multibyte.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_range.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_ntlm_wb.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_get_line.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_threads.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_addrinfo.c ./cmake-3.20.0/Utilities/cmcurl/lib/libcmcurl.a ./cmake-3.20.0/Utilities/cmcurl/lib/curl_config.h.cmake ./cmake-3.20.0/Utilities/cmcurl/lib/curl_path.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_threads.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_config.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_gssapi.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_multibyte.c ./cmake-3.20.0/Utilities/cmcurl/lib/curlx.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_ntlm_wb.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_fnmatch.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_memrchr.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_addrinfo.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_memory.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_sha256.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_range.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_rtmp.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_ctype.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_endian.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_ctype.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_md4.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_sspi.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_fnmatch.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_ntlm_core.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_setup_once.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_rtmp.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_hmac.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_gethostname.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_get_line.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_endian.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_sasl.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_krb5.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_sasl.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_md5.h ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_path.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_sspi.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_fnmatch.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_path.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_threads.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_rtmp.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_threads.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_gethostname.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_multibyte.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_ntlm_core.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_ctype.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_sspi.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_sasl.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_des.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_memrchr.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_gssapi.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_addrinfo.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_memrchr.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_endian.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_addrinfo.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_gssapi.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_get_line.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_get_line.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_ntlm_wb.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_fnmatch.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_range.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_rtmp.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_ctype.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_des.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_ntlm_core.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_sasl.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_multibyte.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_gethostname.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_range.c.o.d ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_ntlm_wb.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/curl_endian.c.o ./cmake-3.20.0/Utilities/cmcurl/lib/curl_des.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_ldap.h ./cmake-3.20.0/Utilities/cmcurl/lib/curl_path.c ./cmake-3.20.0/Utilities/cmcurl/lib/curl_memrchr.h ./cmake-3.20.0/Utilities/cmcurl/curltest ./cmake-3.20.0/Utilities/cmcurl/CMakeFiles/curltest.dir ./cmake-3.20.0/Utilities/cmcurl/CMakeFiles/curltest.dir/curltest.c.o ./cmake-3.20.0/Utilities/cmcurl/CMakeFiles/curltest.dir/curltest.c.o.d ./cmake-3.20.0/Utilities/Scripts/update-curl.bash ./cmake-3.20.0/Utilities/cm3p/curl ./cmake-3.20.0/Utilities/cm3p/curl/curl.h
leider keine lib files von libcurl
-
@SoIntMan sagte in C++ REST client Library (Linux aarch64) Verständnis Problem:
wenn ich dann dann das dateilsystem mach "curl" suche (k.a. ob das so richtig is):
find ./ -name curlUnd von welchem verzeichnis aus hast du das gemacht? -> Sieht so aus als wärst du in deinem home verzeichnis und suchst nur in dem.
Probier mal:
find /usr/ -name *curl*
Das liefert u.a. bei mir:
/usr/lib/libcurl.so /usr/lib/libcurl.so.4 /usr/lib/libcurl.so.4.7.0 /usr/bin/curl /usr/include/curl /usr/include/curl/curl.h /usr/include/curl/curlver.h
Also sprich shared library, curl binary für die konsole und include verzeichnisse.
Gibt dir CMake denn immer noch den selben Fehler? Hat sich irgendwas geänder? (Sagt er immer noch missing CURL_LIBRARY und CURL_INCLUDE_DIR?)
-
@Leon0402 sagte in C++ REST client Library (Linux aarch64) Verständnis Problem:
Und von welchem verzeichnis aus hast du das gemacht? -> Sieht so aus als wärst du in deinem home verzeichnis und suchst nur in dem.
Aha ok:
/usr/include/x86_64-linux-gnu/curl /usr/include/x86_64-linux-gnu/curl/curlver.h /usr/include/x86_64-linux-gnu/curl/curl.h /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.3 /usr/lib/x86_64-linux-gnu/libcurl-gnutls.a /usr/lib/x86_64-linux-gnu/libcurl.so /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so /usr/lib/x86_64-linux-gnu/libcurl.so.4.5.0 /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.5.0 /usr/lib/x86_64-linux-gnu/pkgconfig/libcurl.pc /usr/lib/x86_64-linux-gnu/libcurl.so.4 /usr/lib/x86_64-linux-gnu/libcurl.la /usr/lib/x86_64-linux-gnu/libcurl.a /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 /usr/lib/x86_64-linux-gnu/libcurl-gnutls.la /usr/lib/python3.6/macurl2path.py /usr/lib/python3.6/__pycache__/macurl2path.cpython-36.pyc /usr/lib/python2.7/macurl2path.py /usr/lib/python2.7/macurl2path.pyc /usr/bin/curl /usr/bin/curl-config /usr/share/aclocal/libcurl.m4 /usr/share/lintian/overrides/libcurl3-gnutls /usr/share/bash-completion/completions/curl /usr/share/zsh/vendor-completions/_curl /usr/share/man/man1/curl.1.gz /usr/share/man/man1/curl-config.1.gz /usr/share/doc/curl /usr/share/doc/libcurl4 /usr/share/doc/libcurl3-gnutls /usr/share/doc/libcurl4-gnutls-dev
jetzt müste ich ja die "/usr/lib/x86_64-linux-gnu/libcurl.so" mit Add_library in cmakelist einfügen können!?
Aber du meintest das "statiche" einbinden von a oder so files in die cmakelist is nicht ok!?
EDIT:
ok
/usr/include/x86_64-linux-gnu/curl /usr/include/x86_64-linux-gnu/curl/curlver.h /usr/include/x86_64-linux-gnu/curl/curl.h
oder das sind die header für mein Host linux,
ich kompiliere code für ein linux sub-system für arm64. d.h. ich muss die libcurl arm64 für das sub-system installieren... hmm.. oh jesus:09
-
@SoIntMan sagte in C++ REST client Library (Linux aarch64) Verständnis Problem:
ich kompiliere code für ein linux sub-system für arm64. d.h. ich muss die libcurl arm64 für das sub-system installieren... hmm.. oh jesus:09
Dann musst du dich mit cross compiling und dem setup der entsprechenden dependencies beschäftigen.
Oder du verwendest zum bauen direkt ein ARM64 system mit linux
-
@SoIntMan sagte in C++ REST client Library (Linux aarch64) Verständnis Problem:
jetzt müste ich ja die "/usr/lib/x86_64-linux-gnu/libcurl.so" mit Add_library in cmakelist einfügen können!?
Aber du meintest das "statiche" einbinden von a oder so files in die cmakelist is nicht ok!?Irgendwie nervt es mich etwas mich widerholen zu müssen. Wenn irgendwas unklar an meinem Post oben war, in dem ich erklärt habe, warum man eher mit CMake Targets arbeiten sollte, dann stell gerne Fragen.
Aber ich weiß nicht, was ich auf "?!" antworten soll.@SoIntMan sagte in C++ REST client Library (Linux aarch64) Verständnis Problem:
ich kompiliere code für ein linux sub-system für arm64. d.h. ich muss die libcurl arm64 für das sub-system installieren... hmm.. oh jesus:09
Das wäre vlt. durchaus eine relevante Info gewesen. Ja das nennt sich cross compiling. Dein Stichwort für cmake sind hier Toolchains:
https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-for-linuxDu musst dann halt CMake sagen, wo er die sachen für dein Zielsystem findet und Compiler, Library Pfade etc. mit den entsprechenden cmake variablen setzen.
-
@Leon0402 sagte in C++ REST client Library (Linux aarch64) Verständnis Problem:
rgendwie nervt es mich etwas mich widerholen zu müssen. Wenn irgendwas unklar an meinem Post oben war, in dem ich erklärt habe, warum man eher mit CMake Targets arbeiten sollte, dann stell gerne Fragen.
Aber ich weiß nicht, was ich auf "?!" antworten soll.Ja hast recht, ich stell mich gerade blöd an.. sorry.
ich werde mich da jetzt erst mal intensiv beschäftigen, und frage dann konkret:)
Danke euch für die Hilfe