构建/移植库到Native Client项目

时间:2016-08-26 21:18:14

标签: python c++ build cygwin google-nativeclient

我正在尝试重新编写现有的c ++项目,以便使用NaCl SDK进行构建,我需要链接一些库,以便修改后的项目能够正确编译。我仍然在开始#34;解决问题的教程阶段,所以到目前为止,我只更改了基本的.cc项目文件和相应的Makefile以添加对jsoncpp的支持...但是现在我绝对不能尝试将一些其他库移植到该项目。特别是,我正在尝试添加curl和opencv,但我想学习这个过程的基础知识,以便下次再花这么多时间。

我一直在使用此页面作为我的主要参考:https://chromium.googlesource.com/webports/+/master/README.md。因为我通常只在Visual Studio中工作并且倾向于使用相同的库,所以我不经常进入命令行或者cygwin等等......所以当我进入这个时我立即迷失了。提前道歉,但在过去几天看了之后,我的脑袋已经糊涂了。

无论如何,我已经克隆了webports git中的所有库,所以我非常确定我拥有构建它们所需的所有文件(即大量的目录用" pkg_info", " build.sh"和" nacl.patch")。虽然我仍然不清楚1)我是否正确设置了环境变量,2)如果我已经安装了cywin以及运行" build.sh&中的命令所需的全部内容,我已经开始运行了。 #34;脚本等。

作为测试,即使我没有在这个项目中使用它,我一直试图链接" 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

这是进步,但我无法理解这个最终的错误信息。 &#34; webports / src / out / cache&#34;目录不存在,并且看起来它没有在&#34; src&#34;目录正在与gclient同步或者openssl正在尝试构建时。我还可以看到在&#34; subprocess.py&#34;中的第1335行抛出异常的位置,如果我确实创建了&#34;缓存&#34;目录在正确的位置,并再次尝试构建确实稍微进一步推动相同的异常之前(但这次没有引用丢失的文件/目录)。

此时我只能认为我错过了存储库的某些部分或某些东西?说真的,WTF ??学习一些我真的不确定我想知道的事情。

虽然如此接近(我希望)。

0 个答案:

没有答案