'undefined symbol: __stack_chk_guard'使用 EMC 构建 FFmpeg 时 libopenh264.so



我正试图在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符号。

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

grep __stack_chk_guard libopenh264.so

仍然回答

Binary file libopenh264.so matches

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

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

我没有完全重建libopenh264。

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

相关内容

  • 没有找到相关文章

最新更新