我们目前正在从AIX和xlC编译器迁移到Linux和GNU工具链。在我们的C/C++编译过程中,我们使用-qnoweakexp编译器标志来禁用弱符号的导出。请看xlc编译器引用。
我在gcc选项摘要中找不到等效的编译器标志。最终目标是不将弱符号导出到我们的编译目标。我能找到的最近的gcc标志是-fno-weak,但是gcc手册声明这个标志不打算用于生产代码中。
后台:我们需要链接到我们正在使用的框架的C库和编译目标,这些库输出了一些弱符号,而我们自己的代码不需要使用这个标志。这就导致了分段断层的偶然发生。这些符号显然是为我们正在使用的一些STL容器生成的,例如:
std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Clear()也就是说,这不是一些符号在源代码中被显式注释为弱的情况,因此不能通过删除注释来解决这个问题。
发布于 2016-12-08 07:08:14
不完全等价,但应该足以满足您的用例:-fvisibility-inlines-hidden。此选项将导致内联函数(如来自标头的STL定义)不从库导出。有关此选项的更多信息,请查看GCC维基。
https://stackoverflow.com/questions/40719070
复制相似问题