未定义的符号GCC / C ++可动态加载* .so对象

时间:2010-05-27 18:31:12

标签: c++ object shared dlopen

- 我正在尝试编译netsnmp mib并扩展snmp代理的功能。

  • 当我尝试启动守护程序并加载共享对象(* .so)时,守护程序会抱怨未定义的符号。 “dlopen失败:Filename.so:未定义的符号:netsnmp_container_table_row_extract”

  • 进一步刺激#nm -D -u Filename.so打印出许多未定义的引用/符号

  • 其中一些引用是system calls特定于snmp代理的。

  • 编译代码时没有任何问题。所有缺少的引用/符号都是对netsnmp代理的调用。

问题: 1.如何在不解析这些符号的情况下编译? AFIK:这些符号必须是静态解析的。 2.我认为系统无法在运行时解决这些问题? 3.我怎么能克服这个问题?任何建议

由于 S.S

1 个答案:

答案 0 :(得分:1)

如果符号来自另一个库,则应在编译时链接它。如果符号来自主应用程序,则应将应用程序与--export-dynamic链接。