我正在尝试在 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编译器功能有关。我试图检查我的libopenh264.so
文件,nm
但nm
告诉我File format not recognized
。但是,使用grep
,我发现__stack_chk_guard
这个文件中有一个符号。
我试图通过添加-fno-stack-protector
and-U_FORTIFY_SOURCE
来重建 libopenh264CFLAGS
和LDFLAGS
但这并没有改变任何东西:
grep __stack_chk_guard libopenh264.so
仍然回答
Binary file libopenh264.so matches
然后我尝试通过添加相同的选项-fno-stack-protector
和-U_FORTIFY_SOURCE
emcc 来构建上面显示的代码,但它也没有改变任何东西。
知道如何摆脱这个问题吗?