我正在尝试重新编写现有的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 ??学习一些我真的不确定我想知道的事情。
虽然如此接近(我希望)。