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
このプログラムは動作しませんか、またはこのセグメンテーションフォールトエラーを解決するためにできることはありますか?
このエラーは、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
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ユーザーであるため、このアプリケーションの別の最新のソリューションを見つける必要があります!
今のところ修正があります。
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
接続してネットワークマネージャー内にあります!
Segfaultを取得すると、通常はライブラリの不一致により予期しない動作が発生します。
segfaultはコアダンプを引き起こします。これは、クラッシュする直前のプログラムの実行状態のファイルへのダンプです。これを使用して、クラッシュした理由をデバッグできます。これは複雑なものです。
デフォルトでは、コアダンプはオフになっていることが多く、オンに切り替えるには、ulimit設定でコアファイルを作成できるようにする必要があります。その後、このコアファイルをデバッガーにロードし、スタックした場所を表示することができます。
コアを生成できるようにセッションを構成するには:
ulimit -c unlimited
次に、プログラムを実行して、セグメンテーション違反を許可し、coreというファイルを作成します
診断するには、gnuデバッガーGDBを使用できます(プログラムはprogramname、corefileはcoreと呼ばれます)
Sudo apt-get install gdb
gdb programname core
その後、プログラムはセグメンテーション違反が発生するポイントまで実行され、プロンプトが表示されます。「bt」と入力すると、問題の原因を示すバックトレースを取得できます。この情報は、あなたがそれを理解していなくても、バグレポートで役立ちます。
多くの場合、コンパイルされたコードからデバッグ情報が取り除かれるため、このアプローチはさらに困難になります。
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が実行されない理由は次のとおりです。
nodejs-legacy
がインストールされていない(run.sh
行39:$NODE/node tether.js
から)、run.sh
行38から:../linux/adb start-server
)。しかし、セグメンテーションエラーは発生しませんでした。 Nodejsについてはわかりませんが、node
がスタンドアロンコマンドとして適切に機能するかどうか試してみましたか?
..adb/server start-server
が正常に実行されたようです。 39行目の$NODE/node tether.js
に問題があるようです。ここで、tether.js
ファイルはnode
コマンドの最初の引数です。 node tether.js
を端末でスタンドアロンコマンドとして実行しようとします。
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つのコマンドが関連しているかどうかはわかりません。これは、前夜に試していたものだったからです。
私の失敗した心のタイプミスを修正するには
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。
ただし、行37はcd ../nodeを読み取り、ノードディレクトリ、ディレクトリの2番目の変更(38行目)cd/some/custom/directory adb start-serverがコンパイラを引き起こすかどうかは不明ですまたはrun.shを実行すると、ノードディレクトリから移動するため、再度エラーが発生します。
この理由は、コードではcd ..であり、指摘する必要があります。 cd ..は何十年もの間、現在のディレクトリから1レベルだけバックアウトするために使用されてきました。
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が削除されます。
試行するもう1つのトリックは、短く、素早く、シンプルですが、問題を打ち負かす可能性があります。より新しくインストールされたadbファイルのコピーを作成し、run.shを使用してtether/linuxディレクトリに貼り付け、明らかに動作しないため、adbの古いコピーを上書きします。
私は正直に、古いadbが壊れているか、おそらく眠いだけだと思います!笑
私はこの回避策を自分で試していませんが、少なくとも試してみる価値はあります。