Как включить заголовок библиотеки при сборке с 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 и других связанных библиотек.

Другие вопросы по тегам