staging.inyokaproject.org

libuv

Status: Gelöst | Ubuntu-Version: Ubuntu 19.10 (Eoan Ermine)
Antworten |

Sec

Avatar von Sec

Anmeldungsdatum:
24. September 2008

Beiträge: 196

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.

mhe

Anmeldungsdatum:
29. Dezember 2007

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

1
sudo -H apt install libuv1-dev

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/

Sec

(Themenstarter)
Avatar von Sec

Anmeldungsdatum:
24. September 2008

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.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

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.

Sec

(Themenstarter)
Avatar von Sec

Anmeldungsdatum:
24. September 2008

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!

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Probier es mal so:

gcc -Wall $(pkg-config --libs --cflags libuv) -o "uvcat" "uvcat.c" 

Sec

(Themenstarter)
Avatar von Sec

Anmeldungsdatum:
24. September 2008

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!

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Hast du eine verlinkbare Quelle für deinen Beispielcode?

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

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.

Antworten |