使用 Emscripten 构建时如何包含库 header?
How to include library header when building with Emscripten?
我正在尝试构建 codecbox.js on Ubuntu 18.04, which involves building FFmpeg with emcc. I have been stuck with 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
中找到了 header,所以我尝试使用 emcc -I/usr/include
进行编译。这消除了错误,但引入了许多其他错误。
然后我读到 (for example here) 我不应该使用本地系统 headers,当我添加选项 -I/usr/include
.
时会发生这种情况
那么在使用 SDK 中提供的 Emscripten 捆绑系统 header 时确保 emcc 找到我的库 header 的正确方法是什么?
/usr/include/lame
听起来你是用系统安装来构建的。
但是,您不应该使用任何系统范围的包来构建 emscriten 模块。假设您正在将 emscripten 编译的包分发到 Web,而不是其他人的桌面。您可能希望手动获取 ffmpeg 和其他相关库的源代码。
我正在尝试构建 codecbox.js on Ubuntu 18.04, which involves building FFmpeg with emcc. I have been stuck with 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
中找到了 header,所以我尝试使用 emcc -I/usr/include
进行编译。这消除了错误,但引入了许多其他错误。
然后我读到 (for example here) 我不应该使用本地系统 headers,当我添加选项 -I/usr/include
.
那么在使用 SDK 中提供的 Emscripten 捆绑系统 header 时确保 emcc 找到我的库 header 的正确方法是什么?
/usr/include/lame
听起来你是用系统安装来构建的。
但是,您不应该使用任何系统范围的包来构建 emscriten 模块。假设您正在将 emscripten 编译的包分发到 Web,而不是其他人的桌面。您可能希望手动获取 ffmpeg 和其他相关库的源代码。