GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux c++ Fehler:undefinierter Verweis auf „dlopen“

Sie müssen gegen libdl verlinken, hinzufügen

-ldl

zu Ihren Linker-Optionen


Ich habe CMake verwendet, um mein Projekt zu kompilieren, und ich habe das gleiche Problem festgestellt.

Die hier beschriebene Lösung funktioniert wie ein Zauber, fügen Sie einfach ${CMAKE_DL_LIBS} zum target_link_libraries()-Aufruf hinzu


@Masci ist richtig, aber falls Sie C (und den gcc Compiler) berücksichtigen, dass dies nicht funktioniert:

gcc -ldl dlopentest.c

Aber das tut:

gcc dlopentest.c -ldl

Es hat ein bisschen gedauert, bis ich es herausgefunden habe...


das geht nicht:

gcc -ldl dlopentest.c

Aber das tut:

gcc dlopentest.c -ldl

Das ist sicher ein lästiges "Feature"

Beim Schreiben der Heredoc-Syntax hatte ich damit zu kämpfen und fand einige interessante Fakten . Mit CC=Clang , das funktioniert:

$CC -ldl -x c -o app.exe - << EOF
#include <dlfcn.h>
#include <stdio.h>
int main(void)
{
  if(dlopen("libc.so.6", RTLD_LAZY | RTLD_GLOBAL))
    printf("libc.so.6 loading succeeded\n");
  else
    printf("libc.so.6 loading failed\n");
  return 0;
}
EOF

./app.exe

sowie alle diese:

  • $CC -ldl -x c -o app.exe - << EOF
  • $CC -x c -ldl -o app.exe - << EOF
  • $CC -x c -o app.exe -ldl - << EOF
  • $CC -x c -o app.exe - -ldl << EOF

Allerdings mit CC=gcc , nur die letzte Variante funktioniert; -ldl nach - (das stdin-Argumentsymbol).


Linux
  1. MPI-Kompilierungsfehler:undefinierter Verweis auf „sqrt“ – Gelöst

  2. cp:Verzeichnis weglassen – Fehler beim Kopieren eines Verzeichnisses unter Linux

  3. C++ Dynamic Shared Library unter Linux

  4. C++ erhält Linux-Distributionsname\Version

  5. Erkennen Sie Windows oder Linux in C, C++

Fehlerbehebung „Inakzeptables TLS-Zertifikat“-Fehler in Linux

Der dpkg-Befehl in Linux – Eine Referenz für Anfänger

Libusb undefinierter Verweis auf

crt1.o:In Funktion `_start':- undefinierter Verweis auf `main' unter Linux

IS_ERR()-Makro unter Linux

Undefinierter Verweis auf Symbolfehler „_ZN5boost6system15system_categoryEv“.