鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

常见使用问题

  • plugin needed to handle lto object

    链接器或者相关工具链在处理LTO对象文件时,需要调用LTO插件来解析对应 section 的信息。这类报错一般是由于 ar/ranlib/nm 没有调用LTO插件导致的,可以通过更换为 gcc-ar/gcc-ranlib/gcc-nm 来解决。

  • undefined symbol

    这类问题有多种成因,以下列举三种较为常见的原因:

    一是符号版本控制相关的情况。由于GCC不支持__asm__形式的符号版本控制,需要在应用源码层面替换为__attribute__(.symver) 形式的符号版本控制。

    二是由于编译过程依赖了objcopy等工具,此类工具不支持处理LTO对象文件,会导致需要重命名重定义的符号没有重命名,引起符号未定义的问题。

    三是涉及到了链接时插桩(-Wl,--wrap=foo),在LTO下会出现 __wrap_foo 的符号未定义的问题,该问题上游社区正在解决中。

  • multi-defined symbol

    一般是由于编译过程依赖了objcopy等工具,此类工具不支持处理LTO对象文件,会导致需要隐藏的符号没有隐藏,引起重复定义的问题。