Skip to content

Instantly share code, notes, and snippets.

@kwk
Last active July 30, 2025 15:24
Show Gist options
  • Select an option

  • Save kwk/3595733 to your computer and use it in GitHub Desktop.

Select an option

Save kwk/3595733 to your computer and use it in GitHub Desktop.
Fix for "undefined reference to dlopen" in CMake projects

Suppose you get this error with the main.cpp file below:

 Linking CXX executable testlink
 CMakeFiles/testlink.dir/main.cpp.o: In function `main':
 main.cpp:(.text+0x1a): undefined reference to `dlopen'
 main.cpp:(.text+0x2a): undefined reference to `dlclose'
 collect2: ld returned 1 exit status
 make[2]: *** [testlink] Error 1
 make[1]: *** [CMakeFiles/testlink.dir/all] Error 2
 make: *** [all] Error 2

All you need to do is add ${CMAKE_DL_LIBS} to the target_link_libraries() call:

 target_link_libraries(testlink ${CMAKE_DL_LIBS})
project(testlink)
add_executable(testlink main.cpp)
target_link_libraries(testlink)
#include <dlfcn.h>
int main(int argc, char* argv[]) {
void *handle = dlopen("/usr/lib/libmagic.so.1", 0);
dlclose(handle);
return 0;
}
@MrSapps

MrSapps commented Mar 26, 2017

Copy link
Copy Markdown

${CMAKE_DL_LIBS} is old but gold!

@kishorekanala

Copy link
Copy Markdown

I faced same problem while building cmake. This problem was during linking of cmcurl.
I included /usr/lib/x86_64-linux-gnu/libdl.so in Utilities/cmcurl/CMakeFiles/LIBCURL.dir/link.txt
gcc picked this up while linking and cmake is built

@tungduonghgg123

Copy link
Copy Markdown

You saved my day!

@mlevkov

mlevkov commented Mar 5, 2019

Copy link
Copy Markdown

You saved my day!!!!

@liuli9203

Copy link
Copy Markdown

Take my knee. Thanks, Buddy

@Fegoist

Fegoist commented Mar 12, 2019

Copy link
Copy Markdown

Definitely saved my day! THX.

@jking777

Copy link
Copy Markdown

Excellent.

@dktapps

dktapps commented May 3, 2019

Copy link
Copy Markdown

Thank you sir. πŸ’―

@marisancans

Copy link
Copy Markdown

Saved my day!

@rqds12

rqds12 commented Jul 6, 2019

Copy link
Copy Markdown

save the day again

@emabello42

Copy link
Copy Markdown

Thank you!! You saved my day too :)

@kwk

kwk commented Aug 8, 2019

Copy link
Copy Markdown
Author

Haha, I'm glad this snippet has helped so many people already. I mean, it is seven years old already :)

@gyzdmgqy

Copy link
Copy Markdown

Thank you so much this really worked for me.

@ruipacheco

Copy link
Copy Markdown

Take my knee. Thanks, Buddy

what?

@kamran-raei

kamran-raei commented Dec 4, 2020

Copy link
Copy Markdown

great.
its a shortcut for :
find_library(dl NAMES dl PATH /usr/lib/x86_64-linux-gnu/libdl.so)
target_link_libraries(${PROJECT_NAME} ${dl})

@FreePhoenix888

Copy link
Copy Markdown

You saved my time! Thank you!

@PGoski

PGoski commented Apr 15, 2022

Copy link
Copy Markdown

Saved my time also! Thank you!

@Alireza67

Copy link
Copy Markdown

Thanks

@taovc

taovc commented May 16, 2022

Copy link
Copy Markdown

thanks!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

@llyxperf

llyxperf commented Oct 5, 2022

Copy link
Copy Markdown

thanks!!U saaave my dayyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

@akun-y

akun-y commented Oct 22, 2022

Copy link
Copy Markdown

thanks!!U saaave my dayyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

@cbldlpl

cbldlpl commented Nov 22, 2022

Copy link
Copy Markdown

thanks!!U saaave my dayyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

@ep2277

ep2277 commented Aug 1, 2023

Copy link
Copy Markdown

πŸš€πŸ’₯πŸ‘Œ. yyyyyyyihaaaaa!

@yhyu13

yhyu13 commented Feb 4, 2024

Copy link
Copy Markdown

savior for my issue here bombela/backward-cpp#331 with backwardcpp link against libdl

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment