Skip to content

Libdl

Dynamic Loader.

Dynamic Loader Function Interfaces

  • dladdr
  • dlclose
  • dlerror
  • dlopen
  • dlsym

See also

Troubleshooting

Not found symbol

dlsym 함수에서 심볼을 찾을 수 없을 경우 아래와 같이 nm으로 확인해보자:

$ nm libc2rtc.so
0000000000004d60 t _c2cPluginBaseInfo

위와 같이 심볼이 소문자 t라면 호출할 수 없다. GCC:Attribute를 사용하여 함수를 배포해야 한다.

// Windows:
#define EXPORT_DEF __declspec(dllexport)
// GCC
#define EXPORT_DEF __attribute__((visibility("default")))
// ...
EXPORT_DEF void _c2cPluginBaseInfo() { ... }

컴파일 후 아래와 같이 nm으로 확인하면 대문자 T로 바뀐걸 확인할 수 있다.

$ nm libc2rtc.so
0000000000004d20 T _c2cPluginBaseInfo

참고로 소문자t는 로컬 텍스트 영역, 대문자T는 전역(External) 텍스트 영역에 위치된다.

Favorite site

Symbol load tips