2013-11-13 6 views
0

У меня есть плагин NPAPI, который используется для совместного использования экрана.Как работает NaCl в следующем сценарии

Для этого я использую библиотеки zlib, jpeg, tight-vnc и библиотеку (например, libX), разработанную мной.

Теперь я хочу отправить его в NaCl.

libX имеет структуру, как:

     /X/commonfiles 

        /X/win/*.cpp *.h 

        /X/linux/*.cpp *.h 

        /X/mac/*.cpp *.h *.mm 

Эти каталоги содержат CPP файлы, специфичные для платформы.

Я использую make-файлы для их компиляции в соответствии с платформой.

Но я не могу понять, как инструментальная цепочка NaCl будет генерировать nexe или pexe из моей библиотеки/кода.

Есть ли какой-либо make-файл, который мы должны рассмотреть, или любую другую вещь, которую я пропускаю.

Пожалуйста, помогите!

Спасибо !!!

+0

Как вы строите libX для Linux? Вероятно, это будет проще всего, если вы используете одну и ту же систему сборки, но измените свой компилятор, чтобы вместо этого использовать инструменты NaCl (GCC, AR, LD и т. Д.). Мы делаем это в библиотеке naclports (https://code.google.com/p/naclports/), и для этого обычно требуется очень мало модификаций. – binji

+0

Я уже упоминал, что я использую Makefile. Но как насчет кода Windows или кода Mac? По моему пониманию, я должен получить один файл nexe/pexe, который служит моей цели (live Screen-Sharing) для всех ОС [поскольку этот exe будет работать под песочницей Chrome]. – rohitvk

+0

Итак, мой вопрос в том, что NaCl может генерировать общий код из специфичного для платформы кода, который является частью моего libX. Чтобы избежать использования #ifdef (инструкций для конкретной платформы) в моем коде, я поместил файлы своего кода в каталоги, такие как win/mac /, как указано выше. Теперь я хочу понять, что я должен сделать, чтобы скомпилировать мои libX с NaCl, чтобы произвести pexe без фундаментальных ошибок. Надеюсь, мой запрос будет ясным! спасибо за ответ. – rohitvk

ответ

0

Во-первых, NaCl - это технология песочницы, обеспечивающая безопасность при запуске собственного кода в браузере. Таким образом, вы не сможете напрямую обращаться к файловой системе пользователя (так же, как и с плагином NPAPI). Возможно, вам потребуется изменить свою библиотеку, чтобы поддерживать NaCl в качестве новой «операционной системы».

Это говорит о том, что многие функции доступны через Pepper Plugin API (PPAPI), что позволяет плагину NaCl взаимодействовать с браузером. Кроме того, библиотека nacl_io, которая поставляется с NaCl SDK, обеспечивает более знакомый интерфейс, подобный POSIX, для поддержки файловых ввода/вывода и сокетов.

Оно не должно быть слишком сложно, чтобы попытаться строить свою библиотеку с помощью pnacl набора инструментов следующим образом:

  1. Native Client SDK Скачать. Когда вы закончите, у вас должен быть каталог с именем pepper_31, который содержит SDK собственного клиента.

  2. Собственная клиентская сборка, скорее всего, будет больше похожа на ваш Linux-порт. В своем make-файле измените любое правило сборки, которое будет выполнять вашу собственную инструментальную цепочку, чтобы использовать вместо нее toolchain pnacl.

    • g++ =>pepper_31/toolchain/linux_pnacl/bin/pnacl-clang++
    • ar =>pepper_31/toolchain/linux_pnacl/bin/pnacl-ar
    • т.д.
  3. Попробуйте создать свою сборку Linux. Вероятно, у вас будут некоторые сбои компиляции, возможно, из недостающих библиотек, возможно, из-за различий в заголовках. В зависимости от того, что делает ваша библиотека, возможно, потребуется изменить его, чтобы использовать PPAPI, чтобы получить доступ к вещам, как график, розетки, запросы URL, File IO и т.д.

После того, как вы сделаете это, вы, вероятно, есть еще несколько конкретных вопросов о том, как реализовать нужные функции.:)

Смежные вопросы