Kann mir jemand der schon mit der libuv (asynchrone, ereignisgesteuerte Programmierung) arbeitet oder gearbeitet hat beim Einstieg helfen? Um die Beispiele aus dem "uvbook" ausprobieren zu können, wollte ich die libuv installieren. In der Synaptic-Paketverwaltung gibt es das Paket "libuv1" (warum da an libuv eine 1 hängt konnte ich nicht klären!). Wenn man das Paket installiert hat, meldet der gcc bei "#include <uv.h>" (aus Beispiel übernommen), dass er das Header nicht finden kann (unter /usr/include ist auch wirklich nichts und Synaptic zeigt unter den "Installierten Dateien" auch keine Header-Datei an). Über apt-get hab ich es dann nicht mehr probiert. Auch trau ich mich nicht an die Methode aus dem "uvbook" (cd libuv, ./autogen.sh, ./configure, make) ran, weil ich nicht weiß, wie ich das Ding wieder wegkriegen soll, wenn es nicht funktioniert.
libuv
|
Anmeldungsdatum: Beiträge: 196 |
|
||
|
Anmeldungsdatum: Beiträge: 210 |
Ich kenne mich libuv nicht aus, aber wenn Du die header willst, dann musst du an das paket immer ein -dev anfügen .. also versuch es mal mit
BTW: bei ubu1910 ist libuv v1.24.1. enthalten .. ich nehme an, die 1 kommt von der major Versionsnummer, die aktuell 1 ist .. siehe https://dist.libuv.org/dist/ |
||
|
(Themenstarter)
Anmeldungsdatum: Beiträge: 196 |
Danke! Schon mal einen Schritt weiter: Jetzt hat er das Header, aber das scheint irgendwie nicht zu passen. Bei jedem Aufruf einer Bibliotheksfunktion meldet der gcc einen Fehler. Die Beispielprogramme nutzen libuv v1.30.1 und installiert ist libuv1 v1.30.1-1. Die Header-Datei sieht eigentlich gut aus. Stichprobe ok. Kann finden, was dem Compiler angeblich fehlt. |
||
|
Anmeldungsdatum: Beiträge: 11278 |
Zeig bitte mal die Fehlermeldungen des Compiler - vermutlich musst du mit pkg-config die nötigen Build-Flags aus der /usr/lib/x86_64-linux-gnu/pkgconfig/libuv.pc (bzw. der 32-Bit Variante davon) ermitteln und sie gcc mitgeben, damit das Include-Verzeichnis und die Linker-Optionen passen. Es wäre hilfreich das Makefile für das Beispielprojekt sehen zu können. |
||
|
(Themenstarter)
Anmeldungsdatum: Beiträge: 196 |
gcc -Wall -o "uvcat" "uvcat.c" (im Verzeichnis: /home/stefan/Genesis/UVTest) /usr/bin/ld: /tmp/ccEQesox.o: in function `on_write': uvcat.c:(.text+0x29): undefined reference to `uv_strerror' /usr/bin/ld: uvcat.c:(.text+0x57): undefined reference to `uv_default_loop' /usr/bin/ld: uvcat.c:(.text+0x88): undefined reference to `uv_fs_read' /usr/bin/ld: /tmp/ccEQesox.o: in function `on_read': uvcat.c:(.text+0xdb): undefined reference to `uv_strerror' /usr/bin/ld: uvcat.c:(.text+0x11c): undefined reference to `uv_default_loop' /usr/bin/ld: uvcat.c:(.text+0x135): undefined reference to `uv_fs_close' /usr/bin/ld: uvcat.c:(.text+0x15e): undefined reference to `uv_default_loop' /usr/bin/ld: uvcat.c:(.text+0x192): undefined reference to `uv_fs_write' /usr/bin/ld: /tmp/ccEQesox.o: in function `on_open': uvcat.c:(.text+0x20c): undefined reference to `uv_buf_init' /usr/bin/ld: uvcat.c:(.text+0x229): undefined reference to `uv_default_loop' /usr/bin/ld: uvcat.c:(.text+0x25a): undefined reference to `uv_fs_read' /usr/bin/ld: uvcat.c:(.text+0x26f): undefined reference to `uv_strerror' /usr/bin/ld: /tmp/ccEQesox.o: in function `main': uvcat.c:(.text+0x2b8): undefined reference to `uv_default_loop' /usr/bin/ld: uvcat.c:(.text+0x2dc): undefined reference to `uv_fs_open' /usr/bin/ld: uvcat.c:(.text+0x2e1): undefined reference to `uv_default_loop' /usr/bin/ld: uvcat.c:(.text+0x2ee): undefined reference to `uv_run' /usr/bin/ld: uvcat.c:(.text+0x2fa): undefined reference to `uv_fs_req_cleanup' /usr/bin/ld: uvcat.c:(.text+0x306): undefined reference to `uv_fs_req_cleanup' /usr/bin/ld: uvcat.c:(.text+0x312): undefined reference to `uv_fs_req_cleanup' collect2: error: ld returned 1 exit status Kompilierung fehlgeschlagen. Alles, was angeblich fehlt, steht in der Header-Datei (Vollständig geprüft). Eigentlich motzt ja nicht der Compiler sondern der Linker. Kann doch nicht sein, dass das was im Header steht in der Implementierung fehlt? Bearbeitet von ChickenLipsRfun2eat: Bitte verwende in Zukunft Codeblöcke, um die Übersicht im Forum zu verbessern! |
||
|
Anmeldungsdatum: Beiträge: 11278 |
Probier es mal so: gcc -Wall $(pkg-config --libs --cflags libuv) -o "uvcat" "uvcat.c" |
||
|
(Themenstarter)
Anmeldungsdatum: Beiträge: 196 |
gcc -Wall $(pkg-config --libs --cflags libuv) -o "uvcat" "uvcat.c" (im Verzeichnis: /home/stefan/Genesis/UVTest) /usr/bin/ld: /tmp/ccp6PasX.o: in function `on_write': uvcat.c:(.text+0x29): undefined reference to `uv_strerror' /usr/bin/ld: uvcat.c:(.text+0x57): undefined reference to `uv_default_loop' /usr/bin/ld: uvcat.c:(.text+0x88): undefined reference to `uv_fs_read' /usr/bin/ld: /tmp/ccp6PasX.o: in function `on_read': uvcat.c:(.text+0xdb): undefined reference to `uv_strerror' /usr/bin/ld: uvcat.c:(.text+0x11c): undefined reference to `uv_default_loop' /usr/bin/ld: uvcat.c:(.text+0x135): undefined reference to `uv_fs_close' /usr/bin/ld: uvcat.c:(.text+0x15e): undefined reference to `uv_default_loop' /usr/bin/ld: uvcat.c:(.text+0x192): undefined reference to `uv_fs_write' /usr/bin/ld: /tmp/ccp6PasX.o: in function `on_open': uvcat.c:(.text+0x20c): undefined reference to `uv_buf_init' /usr/bin/ld: uvcat.c:(.text+0x229): undefined reference to `uv_default_loop' /usr/bin/ld: uvcat.c:(.text+0x25a): undefined reference to `uv_fs_read' /usr/bin/ld: uvcat.c:(.text+0x26f): undefined reference to `uv_strerror' /usr/bin/ld: /tmp/ccp6PasX.o: in function `main': uvcat.c:(.text+0x2b8): undefined reference to `uv_default_loop' /usr/bin/ld: uvcat.c:(.text+0x2dc): undefined reference to `uv_fs_open' /usr/bin/ld: uvcat.c:(.text+0x2e1): undefined reference to `uv_default_loop' /usr/bin/ld: uvcat.c:(.text+0x2ee): undefined reference to `uv_run' /usr/bin/ld: uvcat.c:(.text+0x2fa): undefined reference to `uv_fs_req_cleanup' /usr/bin/ld: uvcat.c:(.text+0x306): undefined reference to `uv_fs_req_cleanup' /usr/bin/ld: uvcat.c:(.text+0x312): undefined reference to `uv_fs_req_cleanup' collect2: error: ld returned 1 exit status Kompilierung fehlgeschlagen. Bearbeitet von ChickenLipsRfun2eat: Bitte verwende in Zukunft Codeblöcke, um die Übersicht im Forum zu verbessern! |
||
|
Anmeldungsdatum: Beiträge: 11278 |
Hast du eine verlinkbare Quelle für deinen Beispielcode? |
||
|
Anmeldungsdatum: Beiträge: 11278 |
http://nikhilm.github.io/uvbook/ sieht ja vor, dass man sich libuv aus https://github.com/nikhilm/uvbook selber baut und dazu passend gibt es dann auch ein Makefile im code-Ordner für die Beispielprojekte. |