【发布时间】:2011-02-15 03:03:25
【问题描述】:
我正在构建一个共享库,我使用 IBM 的 VisualAge C/C++ 编译器将它动态加载(使用 dlopen)到我的 AIX 应用程序中。不幸的是,它似乎去掉了必要的符号:
rtld:0712-002 致命错误:正在退出。 rtld:0712-001 符号 setVersion__Q2_3CIF17VersionReporterFRCQ2_3std12basic_stringXTcTQ2_3std11char_traitsXTc_TQ2_3std9allocatorXTc__ 被引用 来自模块 ./object/AIX-6.1-ppc/plugins/plugin.so(),但运行时定义 未找到该符号。共享库和加载共享库的应用程序都针对包含错误消息中提到的 VersionReporter 的静态库编译/链接。
要链接共享库,我使用以下选项:-bM:SRE -bnoentry -bexpall 为了链接应用程序,我使用了这个选项:-brtl
我可以使用一个选项来防止此符号在应用程序中被剥离吗?我已尝试使用 IBM 文档中所述的 -nogc,但这会导致共享库的格式无效或应用程序无法链接(取决于我使用的是哪一个)。
【问题讨论】: