'undefined symbol: __stack_chk_guard' 在 libopenh264.so 使用 emcc 构建 FFmpeg 时
'undefined symbol: __stack_chk_guard' in libopenh264.so when building FFmpeg with emcc
我正在尝试在 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
然后我尝试通过向 emcc 添加相同的选项 -fno-stack-protector
和 -U_FORTIFY_SOURCE
来构建上面显示的代码片段,但它也没有改变任何东西。
知道如何解决这个问题吗?
我还没有完全重建 libopenh264。
将-fno-stack-protector
和-U_FORTIFY_SOURCE
添加到CFLAGS
、CXXFLAGS
和LDFLAGS
然后做make clean
和make
解决了问题:libopenh264.so不再嵌入符号[=17=].
我正在尝试在 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
然后我尝试通过向 emcc 添加相同的选项 -fno-stack-protector
和 -U_FORTIFY_SOURCE
来构建上面显示的代码片段,但它也没有改变任何东西。
知道如何解决这个问题吗?
我还没有完全重建 libopenh264。
将-fno-stack-protector
和-U_FORTIFY_SOURCE
添加到CFLAGS
、CXXFLAGS
和LDFLAGS
然后做make clean
和make
解决了问题:libopenh264.so不再嵌入符号[=17=].