Есть ли разумный способ создания веб-сборки "статической библиотеки" в многомодульной сборке для emscripten - PullRequest
0 голосов
/ 09 ноября 2018

Я конвертирую большое приложение C ++ для запуска в среде веб-сборки. Сборка организована в модули, и каждый подпроект модуля создает статическую или динамическую библиотеку.

Из того, что я прочитал, пока нет стандартизированного "ABI" для модулей "wasm" для динамической компоновки в движок браузера, поэтому в настоящее время динамическая компоновка предварительно скомпилированных и связанных библиотек пока не поддерживается.

Но в случае статических библиотек они представляют собой просто наборы предварительно скомпилированных «промежуточных» «объектных» кодов, которые преобразуются в код распределения на заключительном этапе «связывания». У меня есть компилятор для создания ".bc" "объектного кода" из написанного языка.

Я не нашел никаких ссылок на создание простого архива выходных данных компилятора, который можно передать в последнюю "ссылку", поддерживаемую компилятором / компоновщиком emcc.

Итак, стратегия заключается в том, что я могу создавать zip-файлы (вроде jar-файлов) с простым манифестом, а система сборки может распаковать их все во временную область и объединить файлы экспорта. затем «связать» всю массу вместе в браузере «распространяемого» модуля.

Есть ли зарождающееся стандартное определение для такого рода вещей? Если так, я должен поддержать это.

1 Ответ

0 голосов
/ 09 ноября 2018

Вы должны иметь возможность использовать emar, как стандартный инструмент ar, для создания библиотек из объектных файлов .bc.

Затем вы можете передать их в em++ (или emcc) во время компоновки, и они будут работать так же, как нативные библиотеки с нативными компиляторами. Вы можете ссылаться на них непосредственно в командной строке или с помощью -L / -l аргументов.

...