gpt4 book ai didi

c++ - 防止符号在 IBM Visual Age C/C++ for AIX 中被剥离

转载 作者:行者123 更新时间:2023-11-28 08:29:37 27 4
gpt4 key购买 nike

我正在构建一个共享库,我使用 IBM 的 VisualAge C/C++ 编译器将其动态加载(使用 dlopen)到我的 AIX 应用程序中。不幸的是,它似乎删除了必要的符号:

rtld: 0712-002 fatal error: exiting.rtld: 0712-001 Symbol setVersion__Q2_3CIF17VersionReporterFRCQ2_3std12basic_stringXTcTQ2_3std11char_traitsXTc_TQ2_3std9allocatorXTc__ was referencedfrom module ./object/AIX-6.1-ppc/plugins/plugin.so(), but a runtime definitionof the symbol was not found.

共享库和加载共享库的应用程序都针对包含错误消息中提到的 VersionReporter 的静态库进行编译/链接。

要链接共享库,我使用这些选项:-bM:SRE -bnoentry -bexpall为了链接应用程序,我使用了这个选项:-brtl

我可以使用一个选项来防止此符号在应用程序中被删除吗?我已尝试使用 IBM 文档中所述的 -nogc,但这会导致共享库格式无效或应用程序无法链接(取决于我使用的是哪个应用程序)。

最佳答案

是的。这并没有真正连接到特定的语言或编译器。例如,相同的通用技术用于 gcc。 -bI:foo.exp 用于告诉链接器 foo.exp 中列出的符号将来自顶部的名称。同样,-BE:dog.exp 用于告诉链接器,dog.exp 中列出的符号已导出,可供其他人使用。

您可以看到/bin/ldd 和/bin/dump 可以用来查看这些符号。

关于c++ - 防止符号在 IBM Visual Age C/C++ for AIX 中被剥离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2759725/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com