【发布时间】: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 添加到CFLAGS 和LDFLAGS 来重建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