Ich habe eine neue Funktion (fuse_lowlevel_notify_inval_directory) in User Space Fuse-Bibliothek hinzugefügt. Die Kompilierung und Erstellung von libfuse.so ist ohne Fehler abgeschlossen. Aber wenn meine Anwendung diese neue Funktion zu nutzen versucht, wird der Linker-Fehler werfen: undefined reference to `fuse_lowlevel_notify_inval_directory‘ collect2: ld returned 1 exit statusnm Symbol Ausgabe t vs T in einer gemeinsamen so Bibliothek
Wenn ich mit nm
geprüftnm ../libfuse.so | grep inval
00000000000154ed T fuse_invalidate
**000000000001e142 t fuse_lowlevel_notify_inval_directory**
000000000001e26c T fuse_lowlevel_notify_inval_entry
000000000001e1cb T fuse_lowlevel_notify_inval_inode
T/t bedeutet, dass das Symbol im Textabschnitt vorhanden ist. Wenn Großbuchstaben, ist das Symbol global (extern). Ich vermute, das ist das Problem. Die neue hinzugefügte Funktion zeigt Kleinbuchstaben t, während andere ältere Funktionen Großbuchstaben T haben. Irgendeine Idee darüber, was ich falsch machen könnte?
Anscheinend haben Sie versäumt, Ihrer Funktion externe Verknüpfung zu geben. Brauchen Sie den Code, mindestens, um hilfreicher zu sein. –