'unopen symbol:__stack_chk_guard'在libopenh264.so中,当使用emcc构建FFmpeg时

问题描述 投票:0回答: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检查我的nm文件,但是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

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

任何想法如何摆脱这个问题?

ffmpeg emscripten webassembly stack-smash openh264
1个回答
0
投票

我还没有完全重建libopenh264。

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

© www.soinside.com 2019 - 2024. All rights reserved.