Как включить заголовок библиотеки при сборке с Emscripten?
Я пытаюсь создать codecbox.js на Ubuntu 18.04, который включает сборку FFmpeg с emcc. Я застрял в заблужденииlibmp3lame >= 3.98.3 not found
ошибка. В моем случае проблем с установкой libmp3lame нет. После дальнейшего расследования FFmpeg'sconfigure
script, я обнаружил, что следующий тестовый файл не удалось скомпилировать с помощью 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
. Это устранило ошибку, но внесло множество других ошибок.
Затем я прочитал ( например, здесь), что мне не следует использовать заголовки локальной системы, что происходит, когда я добавляю параметр-I/usr/include
.
Итак, как правильно гарантировать, что emcc найдет заголовок моей библиотеки при использовании системных заголовков Emscripten, предоставленных в SDK?
1 ответ
/usr/include/lame
звучит так, как будто вы строите его с установкой системы. Однако вы не должны создавать модуль emscriten с какими-либо общесистемными пакетами. Представьте, что вы распространяете скомпилированный с помощью emscripten пакет в Интернете, а не на чужой рабочий стол. Вероятно, вы захотите вручную получить исходный код f fmpeg и других связанных библиотек.