Как вы используете существующие библиотеки C с собственным клиентом Chrome?

Я новичок в разработке приложений Chrome и конвейере Native Client/PNaCL. Я немного запутался в процессе использования существующего кода/библиотек C в приложении Chrome. Часто задаваемые вопросы и официальные документы NaCL говорят о том, что использовать существующий код легко, и это одно из преимуществ разработки приложений для Chrome.

Тем не менее, есть также упоминание о nacl-ports, официальном списке портированных библиотек C, которые будут использоваться в приложениях Native Client.

Если у меня есть какая-то случайная библиотека C, которую я использовал, каков процесс ее фактического использования в моем приложении Chrome? Этот вопрос кажется глупым, но я совершенно запутался в этом процессе. Должен ли я перекомпилировать исходный код с помощью компилятора NaCL? Где в SDK я могу найти это?

В FAQ также упоминается, что такие вещи, как форки, файловый ввод-вывод, не разрешены в библиотеке, поэтому мне придется переписать любой код, который делает эти вещи, это правильно?

Итог: у меня есть существующая библиотека C. Каков процесс его правильного использования и совершения вызовов в приложении Chrome?


person user2666425    schedule 09.11.2014    source источник
comment
У меня нет под рукой URL, но в сети есть информация от Google о том, как скомпилировать C для NaCL. Вам придется скомпилировать свою библиотеку таким образом. Вы не можете использовать его в скомпилированном виде так, как есть. Кроме того, код NaCL не может выполнять системные вызовы ОС. Никакого файлового ввода-вывода, никакого fork/exec, ничего подобного. Цель NaCL — ускорить обработку и использовать уже существующий код C, а не предоставлять приложению Chrome дополнительный доступ к базовой системе.   -  person Marc Rochkind    schedule 09.11.2014
comment
@MarcRochkind Спасибо за информацию. Я нашел информацию о компиляции, которую вы упомянули. Можете ли вы уточнить часть «без файлового ввода-вывода»? Я думал, что NaCL расширяет API хранилища HTML5, предоставляя доступ к локальной файловой системе. Итак, можно ли с уверенностью сказать, что мы можем выполнять файловый ввод-вывод, нам просто нужно пройти через nacl_io и заменить исходные вызовы чтения/записи файла в исходном коде библиотеки?   -  person user2666425    schedule 10.11.2014
comment
Извиняюсь. Я имел в виду отсутствие файлового ввода-вывода через прямые вызовы ОС (Linux). Конечно, вызовы Chrome API в порядке.   -  person Marc Rochkind    schedule 11.11.2014


Ответы (1)


Короткий ответ: вам придется перекомпилировать вашу библиотеку с помощью компилятора NaCl C.

Вы можете взглянуть на naclports: этот репозиторий содержит порты многих распространенных библиотек C для Родной клиент. Вы можете более легко просмотреть исходный код здесь.

Что касается файлового ввода-вывода, мы часто предлагаем использовать библиотеку nacl_io при переносе существующего кода. Это обеспечивает интерфейс POSIX (например, fopen/fclose/fread и т. д.). Многие портированные библиотеки не требуют модификаций при использовании nacl_io.

person binji    schedule 01.12.2014