无法在 Ubuntu 16.10 上制作 Clockwordmod Tether

无法在 Ubuntu 16.10 上制作 Clockwordmod Tether

我正在尝试在我的 Ubuntu 16.10 笔记本电脑上安装 Clockwordmod Tether,以便于使用 USB 网络共享Google Play 上的相应应用

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

cd /home/username/Tether/node
./configure
make

但是当我运行的时候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

在网上查找,建议安装以下内容:

sudo apt-get install libssl-dev cmake g++ lib32ncurses5 nodejs-legacy

但这没有帮助。我还看到它可能与 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

但不幸的是,当我第一次按照文件中的指示运行该程序时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

难道这个程序根本就无法运行,或者我能做些什么来解决这个分段错误?

答案1

该错误是 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

我仍在调查该问题。请尝试最初的解决方法,因为您的系统可能不会遇到我遇到的第二个问题。

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

make distclean
./configure --without-snapshot
CXXFLAGS=-fpermissive make

答案2

Clockwordmod Tether Linux 应用程序似乎已经过时,需要大量维护。我已根据上述答案编译了节点。但它给了

linux/run.sh: line 39: 25901 Segmentation fault $NODE/node tether.js

错误。当我检查它的节点版本时,我看到v0.8.14。这个版本太旧了,没有文档。当我编辑 run.sh 文件并让它使用我系统上安装的 nodejs (v4.8.2) 时,它失败了,消息如下: [TypeError: os.setupTun is not a function]

作为 gnu/linux 用户,我们需要找到另一个替代应用程序的最新解决方案!

答案3

我现在已经有一个解决办法了。

  • spaces.cc进入文件:node/deps/v8/src
  • 转到函数:(bool PagedSpace::AdvanceSweeper大约第 2274 行)
  • return true;在方法的开头添加。

做:

make distclean
./configure --without-snapshot
CXXFLAGS=-fpermissive make

运行系绳:

sudo linux/run.sh

它已连接并且位于网络管理器中!

答案4

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

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

./run.sh:第 38 行:../linux/adb:没有此文件或目录该问题与 Tether/Linux 有关,您会发现一个 run.sh,其下方有一行cd../节点需要编辑的内容。查找../linux/adb并将此行更改为adb 启动服务器如果你安装了 ADB,或者/你的/路径/到/adb adb启动服务器如果您只是将 adb 复制并粘贴到 /usr/bin/adb 或其他目录中。

那应该可以消除../linux/adb错误

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

./configure && make

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

更新:

@提问者

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

~/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 }

我猜测 Tether 在这种情况下无法运行的原因可能是:

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

但我没有收到任何分段错误。我对 Nodejs 一无所知,您是否尝试过它node作为独立命令正常工作?

看来您的命令已成功执行。第 39 行..adb/server start-server似乎有问题。这里,文件是命令的第一个参数。我会尝试在终端上将其作为独立命令执行。$NODE/node tether.jstether.jsnodenode tether.js

相关内容