GNU/Linux >> Linux Esercitazione >  >> Linux

Errore Linux c++:riferimento non definito a 'dlopen'

Devi collegarti a libdl, aggiungi

-ldl

alle opzioni del linker


Stavo usando CMake per compilare il mio progetto e ho riscontrato lo stesso problema.

La soluzione qui descritta funziona a meraviglia, aggiungi semplicemente ${CMAKE_DL_LIBS} alla chiamata target_link_libraries()


@Masci è corretto, ma nel caso tu stia usando C (e il gcc compiler) tieni presente che questo non funziona:

gcc -ldl dlopentest.c

Ma questo fa:

gcc dlopentest.c -ldl

Mi ci è voluto un po' per capire...


questo non funziona:

gcc -ldl dlopentest.c

Ma questo fa:

gcc dlopentest.c -ldl

Questa è sicuramente una "caratteristica" fastidiosa

Stavo lottando con esso durante la scrittura della sintassi heredoc e ho trovato alcuni fatti interessanti . Con CC=Clang , funziona:

$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

così come tutti questi:

  • $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

Tuttavia, con CC=gcc , funziona solo l'ultima variante; -ldl dopo - (il simbolo dell'argomento stdin).


Linux
  1. Errore di compilazione MPI:riferimento non definito a `sqrt' – Risolto

  2. Errore C++:riferimento non definito a 'clock_gettime' e 'clock_settime'

  3. IDE C++/Assembly su Linux

  4. C++ ottiene il nome\versione della distribuzione Linux

  5. Libusb riferimento indefinito a

Risoluzione dei problemi "Certificato TLS inaccettabile" Errore in Linux

Il comando dpkg in Linux:un riferimento per principianti

C++ Boost:riferimento non definito a boost::system::generic_category()

Errore Android Studio 13=autorizzazione negata in Linux

macro IS_ERR() in Linux

riferimento indefinito al simbolo errore '_ZN5boost6system15system_categoryEv'