我正在构建一个共享库,我使用 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 ,但这会导致共享库的格式无效或应用程序无法链接(取决于我使用它的那个)。