python — Сборка / портирование библиотек на проекты Native Client

Я пытаюсь переделать существующий проект c ++, чтобы он собирался с NaCl SDK, и мне нужно связать несколько библиотек, чтобы пересмотренный проект был правильно скомпилирован. Я все еще нахожусь в фазе учебного пособия по началу работы по выяснению вещей, и поэтому до сих пор я только изменил базовый файл проекта .cc и соответствующий Makefile, чтобы добавить поддержку jsoncpp … но теперь я абсолютно застрял, пытаясь разберитесь с портированием некоторых других библиотек в проект. В частности, я пытаюсь добавить curl и opencv, но я хотел бы изучить основы этой процедуры, чтобы в следующий раз мне не потребовалось несколько дней, чтобы сделать это снова.

Я использовал эту страницу в качестве моей основной ссылки: https://chromium.googlesource.com/webports/+/master/README.md. Поскольку я обычно работаю только в Visual Studio и склоняюсь к использованию одних и тех же библиотек, я не часто разбираюсь в командной строке, в cygwin и т. Д., Поэтому я сразу же заблудился, когда попал в это дело. Заранее извиняюсь, но моя голова болит после того, как я смотрю на нее последние пару дней.

В любом случае, я клонировал все библиотеки из gports для веб-порталов, так что я почти уверен, что у меня есть все файлы, необходимые для их сборки (т. Е. Множество каталогов с «pkg_info», «build.sh» и «nacl.patch»). «). И у меня есть Cygwin и работает, хотя мне все еще неясно, 1) правильно ли установлена ​​переменная окружения и 2) установлен ли я Cywin со всем необходимым для запуска команд в сценариях «build.sh», и т.п.

В качестве теста, хотя я не использую его для этого проекта, я пытался связать «openssl», чтобы следовать примеру. Я настроил и синхронизировал gclient так, чтобы в итоге я получил новый каталог «src» в каталоге «webports», и я ввел следующее в консоли cygwin:

 $ cd src
# NACL_ARCH=arm make openssl

который вернулся с этим сообщением:

 make: Nothing to be done for 'openssl'.

Попробовав десятки вариантов, я наконец попробовал эту команду из примера:

 $ ./webports/make_all.sh openssl

который вернулся с немного более захватывающим, но все еще неудачным сообщением:

 + set -e
+ TARGETS=openssl
+ TARGETS=openssl
+ BUILD_FLAGS=--ignore-disabled
+ export BUILD_FLAGS
+ NACL_ARCH=x86_64
+ TOOLCHAIN=clang-newlib
+ make openssl
make: Nothing to be done for 'openssl'.
+ NACL_ARCH=x86_64
+ TOOLCHAIN=glibc
+ make openssl
make: Nothing to be done for 'openssl'.
+ NACL_ARCH=i686
+ TOOLCHAIN=clang-newlib
+ make openssl
make: Nothing to be done for 'openssl'.
+ NACL_ARCH=i686
+ TOOLCHAIN=glibc
+ make openssl
make: Nothing to be done for 'openssl'.
+ NACL_ARCH=arm
+ TOOLCHAIN=clang-newlib
+ make openssl
make: Nothing to be done for 'openssl'.
+ NACL_ARCH=arm
+ TOOLCHAIN=glibc
+ make openssl
make: Nothing to be done for 'openssl'.
+ NACL_ARCH=le32
+ TOOLCHAIN=pnacl
+ make openssl
make: Nothing to be done for 'openssl'.
+ '[' -n '' ']'

Так что да, я явно упускаю некоторую часть процесса, но документация действительно не помогает мне понять, что это такое. Любое движение в правильном направлении будет очень цениться.

РЕДАКТИРОВАТЬ:

После многих разочарований, пытаясь расшифровать различные предупреждения и сообщения об ошибках, я решил полностью удалить cygwin и переустановить его с максимально возможным количеством пакетов, которые, как мне казалось, были связаны с git, make, python и т. Д. взял навсегда. Затем я удалил все предыдущие файлы nacl_sdk и начал все заново. Это, кажется, очистило большинство предупреждений, но сборки все еще терпят неудачу.

При синхронизации gclient с заголовками веток я по-прежнему получаю несколько предупреждений или уведомлений (например, «байт-компиляция отключена»), хотя похоже, что большинство из них связано с конкретными инструкциями, скрытыми в новых файлах «src». Я также получаю странное уведомление, что я использую subversion вместо git (даже если git установлен), но это, похоже, также не вызывает никаких проблем.

В любом случае, после завершения синхронизации я устанавливаю переменную среды NACL_SDK_ROOT и меняю каталог:

 $ export NACL_SDK_ROOT=/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/pepper_49
$ cd src

и продолжить сборку:

 $ NACL_ARCH=le32 TOOLCHAIN=pnacl make openssl
bin/webports install openssl
Building 'gtest' [le32/pnacl/release]
Mirroring upstream git repo: https://github.com/google/googletest.git@6f8a664
git clone --mirror https://github.com/google/googletest.git github.com_google_googletest.git
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/webports/src/lib/webports/__main__.py", line 385, in <module>
sys.exit(main(sys.argv[1:]))
File "/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/webports/src/lib/webports/__main__.py", line 371, in main
run_main(args)
File "/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/webports/src/lib/webports/__main__.py", line 366, in run_main
do_cmd(p)
File "/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/webports/src/lib/webports/__main__.py", line 342, in do_cmd
pkg_commands[args.command](package, args)
File "/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/webports/src/lib/webports/__main__.py", line 173, in cmd_pkg_install
from_source=options.from_source)
File "/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/webports/src/lib/webports/source_package.py", line 267, in install
self.install_deps(force, from_source)
File "/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/webports/src/lib/webports/source_package.py", line 223, in install_deps
dep.install(True, force, from_source)
File "/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/webports/src/lib/webports/source_package.py", line 267, in install
self.install_deps(force, from_source)
File "/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/webports/src/lib/webports/source_package.py", line 223, in install_deps
dep.install(True, force, from_source)
File "/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/webports/src/lib/webports/source_package.py", line 281, in install
self.build(build_deps, force)
File "/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/webports/src/lib/webports/source_package.py", line 358, in build
self.download()
File "/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/webports/src/lib/webports/source_package.py", line 397, in download
self.git_clone_to_mirror()
File "/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/webports/src/lib/webports/source_package.py", line 627, in git_clone_to_mirror
run_git_cmd(paths.CACHE_ROOT, ['clone', '--mirror', git_url, git_mirror])
File "/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/webports/src/lib/webports/source_package.py", line 87, in run_git_cmd
stdout=subprocess.PIPE)
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory: '/cygdrive/c/Users/mimewear/Desktop/nacl_sdk/webports/src/out/cache'
make: *** [Makefile:89: openssl] Error 1

Это прогресс, но я не могу понять смысл этого последнего сообщения об ошибке. Каталог «webports / src / out / cache» не существует, и похоже, что он не создается, когда каталог «src» синхронизируется с gclient или когда openssl пытается создать. Я также могу видеть, где генерируется исключение в строке 1335 в «subprocess.py», и, если я создаю каталог «cache» в правильном месте и повторяю попытку, сборка немного подталкивается, прежде чем выдать то же исключение ( но на этот раз без ссылки на отсутствующий файл / каталог).

На данный момент я могу только думать, что мне не хватает какой-то части хранилища или что-то ?? Серьезно, WTF ?? Узнав массу вещей, я действительно не уверен, что хотел бы знать.

Так близко, хотя (я надеюсь).

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]