current dlopen flag is RTLD_LAZY, //src/dynlib.c dynlib_handle_ptr dynlib_open (const char *path) { return dlopen (path, RTLD_LAZY); } my module will also load other shared libs, I got some error like symbol undefined, I found this article http://www.perlmonks.org/?node_id=673396 , after I changed dlopen flags to RTLD_LAZY|RTLD_GLOBAL in src/dynlib.c, the problem is solved. could emacs developer consider to add the RTLD_GLOBAL flag in emacs's source code ? thanks!