web-dev-qa-db-ja.com

Ubuntu 16.10でClockworkmod Tetherを作成できません

Google Playの対応するアプリ でUSBテザリングを容易にするために、Ubuntu 16.10ラップトップにClockwordmod Tetherをインストールしようとしています。

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をインストールする方法はありますか?解決策は、configureまたはmakeについて何も知らない人が理解できるという用語で説明できるものですか。

更新:

以下の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

このプログラムは動作しませんか、またはこのセグメンテーションフォールトエラーを解決するためにできることはありますか?

6
Questioner

このエラーは、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

私はまだその問題を調査しています。あなたのシステムが私の2番目の問題にぶつからないかもしれないので、最初の回避策を試してください。

更新:構成ツールにスナップショットの手順をスキップするように指示することで、2番目の問題を回避できました。残念ながら、スナップショットのステップが何をするのかわからず、失敗するのは後まで延期するだけかもしれません。この2番目の回避策も試してみたい場合は、次のコマンドシーケンスを試してください。

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

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ユーザーであるため、このアプリケーションの別の最新のソリューションを見つける必要があります!

2
csonuryilmaz

今のところ修正があります。

  • ファイルに移動:spaces.cc in node/deps/v8/src
  • 関数に移動:bool PagedSpace::AdvanceSweeper(約2274行目)
  • メソッドの先頭にreturn true;を追加します。

行う:

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

テザーを実行します。

Sudo linux/run.sh

接続してネットワークマネージャー内にあります!

2
NxGraphics

Segfaultを取得すると、通常はライブラリの不一致により予期しない動作が発生します。

segfaultはコアダンプを引き起こします。これは、クラッシュする直前のプログラムの実行状態のファイルへのダンプです。これを使用して、クラッシュした理由をデバッグできます。これは複雑なものです。

デフォルトでは、コアダンプはオフになっていることが多く、オンに切り替えるには、ulimit設定でコアファイルを作成できるようにする必要があります。その後、このコアファイルをデバッガーにロードし、スタックした場所を表示することができます。

コアを生成できるようにセッションを構成するには:

ulimit -c unlimited

次に、プログラムを実行して、セグメンテーション違反を許可し、coreというファイルを作成します

診断するには、gnuデバッガーGDBを使用できます(プログラムはprogramname、corefileはcoreと呼ばれます)

Sudo apt-get install gdb
gdb programname core

その後、プログラムはセグメンテーション違反が発生するポイントまで実行され、プロンプトが表示されます。「bt」と入力すると、問題の原因を示すバックトレースを取得できます。この情報は、あなたがそれを理解していなくても、バグレポートで役立ちます。

多くの場合、コンパイルされたコードからデバッグ情報が取り除かれるため、このアプローチはさらに困難になります。

詳細- http://bl0rg.krunch.be/segfault-gdb-strace.html

1
Amias

Re from:Bob Dickens Jr/BobDCoder、2017この問題にどこに返信すればよいかわからないので、これが正しい場所であることを願っています。

ビルドエラーで説明可能なエラーがいくつかありましたが、エラーを取り除いてコンパイルを進めることができると確信しているので、それらについてコメントしたいと思います。

./ run.sh:38行目:../linux/adb:そのようなファイルやディレクトリはありませんこの問題は、run.shを見つけるTether/Linuxに関連しています。編集が必要な行cd ../nodeがすぐ下にあります。 ADBをインストールした場合は、../ linux/adbを検索し、この行をadb start-serverに変更します。または/ your/path/to/adb adb start-server/ usr/bin/adbまたは他のディレクトリにadbを単にコピーして貼り付ける場合。

これで削除されるはずです../ linux/adbエラー

私はUbuntu 16.04を使用していますが、上記のrarファイルをダウンロードして実行しました

./configure && make

エラーなしでビルドできました。ここに私の ビルドのログを作成 があります。これらの新しいパッケージをインストールした後、make cleanを実行してから./configure && makeを実行しましたか?

更新:

@質問者

ルートとして~/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がスタンドアロンコマンドとして適切に機能するかどうか試してみましたか?

..adb/server start-serverが正常に実行されたようです。 39行目の$NODE/node tether.jsに問題があるようです。ここで、tether.jsファイルはnodeコマンドの最初の引数です。 node tether.jsを端末でスタンドアロンコマンドとして実行しようとします。

1
Abel Tom

Ubuntu 16.04LTS

Sudo apt-get install Android-tools-adb
Sudo ln -s /Android/platform-tools/adb /bin/adb
Sudo apt-get install npm 
npm install chainsaw 

操作可能。

ファイルの編集はありません。残念ながら、最初の2つのコマンドが関連しているかどうかはわかりません。これは、前夜に試していたものだったからです。

0
TobyB

私の失敗した心のタイプミスを修正するには

Re from:Bob Dickens Jr/BobDCoder、2017

ビルドエラーの結果に説明可能なエラーがあり、そのエラーを写真から取り除き、コンパイルとメイクをさらに進めることができると確信しているため、修正のいくつかの考えを提案したいと思います。

./ run.sh:行38:../linux/adb:そのようなファイルまたはディレクトリはありませんこの問題は明らかにTether/Linuxディレクトリ/フォルダはrun.shと呼ばれ、編集する必要があります。

cd ../nodeのすぐ下に行があり、編集する必要がありますFind(行38)。 ./linux/adbADBの自動インストールを行った場合、この行をadb start-serverに変更します。

cd ../node

adb start-server

自動インストールでは、上記のセットアップでパスが自動的に設定されているはずです!

ただし、手動でディレクトリを作成し、adbを/ usr/bin/adbにコピーした場合OR adbを他のディレクトリにコピーした場合次に、行を次のコードに変更する必要がある場合があります。 cd/your/path/to/adb adb start-server

ただし、行37cd ../nodeを読み取り、ノードディレクトリ、ディレクトリの2番目の変更(38行目)cd/some/custom/directory adb start-serverがコンパイラを引き起こすかどうかは不明ですまたはrun.shを実行すると、ノードディレクトリから移動するため、再度エラーが発生します。

この理由は、コードではcd ..であり、指摘する必要があります。 cd ..は何十年もの間、現在のディレクトリから1レベルだけバックアウトするために使用されてきました。

  • (run.sh)は、tether/linuxディレクトリーにあり、開始元および実行場所です。
  • ただし、run.shコード自体では、実行時にrun.shにから戻るように指示します/ linuxサブディレクトリを/ Tetherに、コマンドの「cd ..」部分(37行目) !
  • 37行目のコマンドの終了/ nodeは、nodeディレクトリ。 。 。 。そのような場合は、この問題を修正するために、行37、38および新しい行を再コーディングする自由を取りました。

cd ../node

cd/usr/bin/adb

adb start-server

cd/YourAbsolute/path/back/to/Tether/node

または、行37のコードcd ../nodeを削除して、以下を試してみてください。

cd/usr/bin/adb

adb start-server

cd/YourAbsolute/path/back/to/Tether/node

Nodeをadbサーバーを起動する前に実行する必要があるかどうか、またはNodeがadbサーバーの起動後に実行できるかどうか(論理的には後で考えます)はわかりません。

少し遊ぶと、../ linux/adb Errorが削除されます。

0
Bob Dickens

試行するもう1つのトリックは、短く、素早く、シンプルですが、問題を打ち負かす可能性があります。より新しくインストールされたadbファイルのコピーを作成し、run.shを使用してtether/linuxディレクトリに貼り付け、明らかに動作しないため、adbの古いコピーを上書きします。

私は正直に、古いadbが壊れているか、おそらく眠いだけだと思います!笑

私はこの回避策を自分で試していませんが、少なくとも試してみる価値はあります。

0
Bob Dickens