无法在 Ubuntu 16.10 上制作 Clockwordmod Tether

Que*_*ner 6 usb android make configure

我正在尝试在我的 Ubuntu 16.10 笔记本电脑上安装 Clockwordmod Tether,以便与Google Play 上的相应应用程序进行USB 网络共享。

我已经下载并解压缩了Tether tar 文件。安装说明非常简单。只需在终端中运行以下命令:

cd /home/username/Tether/node
./configure
make
Run Code Online (Sandbox Code Playgroud)

但是当我运行时make,它总是以这个错误结束:

../deps/v8/src/checks.h:251:22: warning: typedef ‘__StaticAssertTypedef__125’ locally defined but not used [-Wunused-local-typedefs]
     SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__)
                      ^
../deps/v8/src/checks.h:241:39: note: in definition of macro ‘SEMI_STATIC_JOIN_HELPER’
 #define SEMI_STATIC_JOIN_HELPER(a, b) a##b
                                       ^
../deps/v8/src/checks.h:251:5: note: in expansion of macro ‘SEMI_STATIC_JOIN’
     SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__)
     ^~~~~~~~~~~~~~~~
../deps/v8/src/checks.h:283:30: note: in expansion of macro ‘STATIC_CHECK’
 #define STATIC_ASSERT(test)  STATIC_CHECK(test)
                              ^~~~~~~~~~~~
../deps/v8/src/v8utils.h:125:3: note: in expansion of macro ‘STATIC_ASSERT’
   STATIC_ASSERT(sizeof(T) == kPointerSize);
   ^~~~~~~~~~~~~
In file included from ../deps/v8/src/elements.h:32:0,
                 from ../deps/v8/src/objects-inl.h:38,
                 from ../deps/v8/src/v8.h:60,
                 from ../deps/v8/src/accessors.cc:28:
../deps/v8/src/objects.h: At global scope:
../deps/v8/src/objects.h:5017:44: error: left operand of shift expression ‘(-1 << 3)’ is negative [-fpermissive]
   static const int kElementsKindMask = (-1 << kElementsKindShift) &
                                        ~~~~^~~~~~~~~~~~~~~~~~~~~~
../deps/v8/src/objects.h:7152:36: error: left operand of shift expression ‘(-8 << 26)’ is negative [-fpermissive]
       (~kMaxCachedArrayIndexLength << kArrayIndexHashLengthShift) |
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
deps/v8/tools/gyp/v8_base.target.mk:209: recipe for target '/home/username/Tether/node/out/Release/obj.target/v8_base/deps/v8/src/accessors.o' failed
make[1]: *** [/home/username/Tether/node/out/Release/obj.target/v8_base/deps/v8/src/accessors.o] Error 1
make[1]: Leaving directory '/home/username/Tether/node/out'
Makefile:26: recipe for target 'node' failed
make: *** [node] Error 2
Run Code Online (Sandbox Code Playgroud)

在网上查了一下,建议安装如下:

sudo apt-get install libssl-dev cmake g++ lib32ncurses5 nodejs-legacy
Run Code Online (Sandbox Code Playgroud)

但这没有帮助。我还看到它可能与 Python 版本问题有关,但我找不到有关如何处理该问题的用户级说明。

有没有办法解决这个问题并在我的 Ubuntu 笔记本电脑上安装 Tether?解决方案是否可以用一无所知configuremake可以理解的人的术语来解释?

更新:

多亏了DropHammer99 在下面的回答,我似乎能够成功编译程序。这是XXFLAGS=-fpermissive make几分钟后命令结束的方式:

  LINK(target) /home/username/Tether/node/out/Release/node: Finished
  touch /home/username/Tether/node/out/Release/obj.target/node_dtrace_header.stamp
  touch /home/username/Tether/node/out/Release/obj.target/node_dtrace_provider.stamp
  touch /home/username/Tether/node/out/Release/obj.target/node_dtrace_ustack.stamp
  touch /home/username/Tether/node/out/Release/obj.target/node_etw.stamp
make[1]: Leaving directory '/home/username/Tether/node/out'
ln -fs out/Release/node node
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我第一次按照README文件中的说明运行程序时,它因以下错误而崩溃:

~/Tether$ sudo linux/run.sh
[sudo] password for username: 
~/Tether
Starting Tether...
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
linux/run.sh: line 39: 21096 Segmentation fault      (core dumped) $NODE/node tether.js
Run Code Online (Sandbox Code Playgroud)

这个程序是不能工作,还是我可以做些什么来解决这个分段错误?

Jus*_*inB 6

该错误是 C++ 编译器抱怨一些可用但不太理想的代码。使用正确的命令行选项,您可以告诉编译器忽略此类代码问题并继续运行。这并不总是最好的解决方案,但它会让事情编译和工作。

首先,运行make clean以清除旧构建尝试留下的任何东西。

然后,运行CXXFLAGS=-fpermissive make以再次尝试使用 C++ 编译器将这些代码问题降级为警告。

我能够在我的 64 位 16.10 安装上重现您的错误,并且此解决方法允许构建为我克服该错误。

不幸的是,随着这个问题,构建似乎进一步失败了:

make -C out BUILDTYPE=Release V=1
make[1]: Entering directory '/home/username/work/Tether/node/out'
  LD_LIBRARY_PATH=/home/username/work/Tether/node/out/Release/lib.host:/home/username/work/Tether/node/out/Release/lib.target:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd ../deps/v8/tools/gyp; mkdir -p /home/username/work/Tether/node/out/Release/obj.target/v8_snapshot/geni; "/home/username/work/Tether/node/out/Release/mksnapshot" --log-snapshot-positions --logfile "/home/username/work/Tether/node/out/Release/obj.target/v8_snapshot/geni/snapshot.log" "/home/username/work/Tether/node/out/Release/obj.target/v8_snapshot/geni/snapshot.cc"
Segmentation fault (core dumped)
deps/v8/tools/gyp/v8_snapshot.target.mk:13: recipe for target '/home/username/work/Tether/node/out/Release/obj.target/v8_snapshot/geni/snapshot.cc' failed
make[1]: *** [/home/username/work/Tether/node/out/Release/obj.target/v8_snapshot/geni/snapshot.cc] Error 139
make[1]: Leaving directory '/home/username/work/Tether/node/out'
Makefile:26: recipe for target 'node' failed
make: *** [node] Error 2
Run Code Online (Sandbox Code Playgroud)

我还在研究这个问题。尝试最初的解决方法,因为您的系统可能不会遇到我的系统遇到的第二个问题。

更新:我可以通过告诉配置工具跳过快照步骤来回避第二个问题。不幸的是,我不知道快照步骤应该做什么,恐怕我可能只是将失败推迟到以后。如果您也想尝试第二种解决方法,请尝试以下命令序列:

make distclean
./configure --without-snapshot
CXXFLAGS=-fpermissive make
Run Code Online (Sandbox Code Playgroud)


小智 1

回复来自:Bob Dickens Jr/BobDCoder,2017 我不知道在哪里回复这个问题,所以我希望这是正确的地方。

我在构建错误中看到了一些可以解释的错误,并希望对它们进行评论,因为我确信它会消除错误并可能进一步进行编译。

./run.sh: line 38: ../linux/adb: No such file or directory这个问题与 Tether/Linux 有关,你会发现一个 run.sh 并且在cd ../node下面有一行需要编辑。找到../linux/adb并将此行更改为adb start-server如果您安装了 ADB,或者/your/path/to/adb adb start-server如果您只是将 adb 复制并粘贴到 /usr/bin/ 中adb 或其他一些目录。

这应该消除../linux/adb错误

我使用的是 Ubuntu 16.04,我下载了上面提到的 rar 文件,然后运行

./configure && make

我成功地构建了,没有错误,这是我的build 日志,你是否尝试过make clean,然后./configure && make在安装了这些新软件包之后?

更新:

@提问者

这是我~/Documents/Tether/linux/run.sh以 root 身份运行后的输出。

~/Documents/Tether/linux
  Starting Tether...
 ./run.sh: line 38: ../linux/adb: No such file or directory
  Opening tun device.
  Opening tun device: /dev/net/tun
  Forking worker.
  Opening tun device.
  adb binary path: "/home/username/Documents/Tether/linux/adb"
  Checking phone status...
  tun worker initialized.
  { [Error: Command failed: /bin/sh: 1:/home/username/Documents/Tether/linux/adb: not found
  ] killed: false, code: 127, signal: null }
  Fatal error setting up TCP listener. (Exiting)
  A possible cause may be that a "node.exe" processes was left     dangling.
  Please kill any node processes you find running.
  This may also be cause by a firewall that disallows connections to   Tether.

  /home/username/Documents/Tether/node-tuntap/tuntap.js:558
  exitTether();
  ^
   ReferenceError: exitTether is not defined
   at Server.<anonymous> (/home/username/Documents/Tether/node-tuntap/tuntap.js:558:7)
   at Server.EventEmitter.emit (events.js:96:17)
   at Server._listen2.self._handle.onconnection (net.js:894:14)
   at process.startup.processNextTick.process._tickCallback (node.js:244:9)
   TCP Catcher worker has died. Exiting.
   { '0': 1, '1': null }
Run Code Online (Sandbox Code Playgroud)

我猜想 Tether 在这种情况下没有运行的原因是:

  1. nodejs-legacy未安装(来自run.sh第 39 行:)$NODE/node tether.js
  2. Android SDK 未安装(从run.sh第 38 行开始../linux/adb start-server:)。

但我没有收到任何分段错误错误。我对 Nodejs 不了解,您是否尝试过node作为独立命令是否可以正常工作?

看来你的..adb/server start-server已经成功执行了。看起来$NODE/node tether.js第 39 行有问题。这里,tether.jsfile 是 command 的第一个参数nodenode tether.js我会尝试在终端上作为独立命令执行。