1

我正在尝试在 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文件,nmnm告诉我File format not recognized。但是,使用grep,我发现__stack_chk_guard这个文件中有一个符号。

我试图通过添加-fno-stack-protectorand-U_FORTIFY_SOURCE来重建 libopenh264CFLAGSLDFLAGS但这并没有改变任何东西:

grep __stack_chk_guard libopenh264.so

仍然回答

Binary file libopenh264.so matches

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

知道如何摆脱这个问题吗?

4

1 回答 1

0

我还没有完全重建 libopenh264。

-fno-stack-protectorand添加-U_FORTIFY_SOURCECFLAGS,CXXFLAGS然后LDFLAGSmake cleanmake解决了问题:libopenh264.so 不再嵌入符号__stack_chk_guard

于 2019-11-15T08:31:30.433 回答