【问题标题】:'undefined symbol: __stack_chk_guard' in libopenh264.so when building FFmpeg with emcc'undefined symbol: __stack_chk_guard' in libopenh264.so 使用 emcc 构建 FFmpeg 时
【发布时间】:2020-03-10 07:09:44
【问题描述】:

我正在尝试在 Ubuntu 18.04 上构建 codecbox.js,其中涉及使用 emcc 构建 FFmpeg。

在构建过程的某个阶段,FFmpeg 的configure 脚本会尝试处理以下代码:

#include <wels/codec_api.h>
#include <stdint.h>
long check_WelsGetCodecVersion(void) { return (long) WelsGetCodecVersion; }
int main(void) {
    int ret = 0;
    ret |= ((intptr_t)check_WelsGetCodecVersion) & 0xFFFF;
    return ret;
}

我得到一个链接器错误:

wasm-ld: error: /.../codecbox.js/build/dist/lib/libopenh264.so: undefined symbol: __stack_chk_guard

似乎与Stack Smashing Protector 编译器功能有关。我试图用nm 检查我的libopenh264.so 文件,但nm 告诉我File format not recognized。但是,使用grep,我发现这个文件中有一个__stack_chk_guard符号。

我尝试通过将-fno-stack-protector-U_FORTIFY_SOURCE 添加到CFLAGSLDFLAGS 来重建libopenh264,但这并没有改变任何东西:

grep __stack_chk_guard libopenh264.so

还是回答

Binary file libopenh264.so matches

然后我尝试通过将相同的选项 -fno-stack-protector-U_FORTIFY_SOURCE 添加到 emcc 来构建上面显示的代码,但它也没有改变任何东西。

知道如何解决这个问题吗?

【问题讨论】:

  • Emacripten 的版本是多少?
  • 最新,1.39.1。

标签: ffmpeg emscripten webassembly stack-smash openh264


【解决方案1】:

我还没有完全重建 libopenh264。

-fno-stack-protector-U_FORTIFY_SOURCE 添加到CFLAGSCXXFLAGSLDFLAGS 然后执行make cleanmake 解决了问题:libopenh264.so 不再嵌入符号__stack_chk_guard

【讨论】:

    猜你喜欢
    • 2020-09-24
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    相关资源
    最近更新 更多