使用Emscripten构建时如何包含库标头?

时间:2019-11-13 12:52:30

标签: compilation ubuntu-18.04 emscripten lame emcc

我正在尝试在Ubuntu 18.04上构建codecbox.js,其中涉及使用emcc构建FFmpeg。我被the misleading libmp3lame >= 3.98.3 not found error所困扰。就我而言,libmp3lame安装没有问题。在进一步研究FFmpeg的configure脚本后,我发现以下测试文件无法使用emcc编译:

#include <lame/lame.h>
#include <stdint.h>

long check_lame_set_VBR_quality(void) { return (long) lame_set_VBR_quality; }
int main(void) {
    int ret = 0;
    ret |= ((intptr_t)check_lame_set_VBR_quality) & 0xFFFF;
    return ret;
}

我得到fatal error: 'lame/lame.h' file not found

我在/usr/include/lame中找到了标头,因此我尝试使用emcc -I/usr/include进行编译。这消除了错误,但引入了许多其他错误。

然后我读到(for example here),我不应该使用本地系统标头,这是在添加选项-I/usr/include时发生的。

那么在使用SDK内提供的Emscripten捆绑系统头文件时,确保emcc找到我的库头文件的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

/usr/include/lame听起来像您是通过系统安装来构建它的。 但是,您不应使用任何系统范围的软件包来构建一个emscriten模块。想象一下,您是将Emscripten编译的程序包分发到Web,而不是其他人的桌面。您可能想要手动获取ffmpeg和其他相关库的来源。