J'essaie d'installer Clockwordmod Tether sur mon ordinateur portable Ubuntu 16.10 afin de faciliter le partage de connexion USB avec l'application correspondante sur Google Play .
J'ai téléchargé et extrait le fichier Tether tar . Les instructions d'installation sont très simples. Il suffit de lancer ce qui suit dans un terminal:
cd /home/username/Tether/node
./configure
make
Mais quand je lance make
, cela se termine toujours par cette erreur:
../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
En regardant sur le net, il a été suggéré d'installer ce qui suit:
Sudo apt-get install libssl-dev cmake g++ lib32ncurses5 nodejs-legacy
Mais cela n'a pas aidé. J'ai aussi vu que cela pouvait avoir quelque chose à voir avec un problème de version Python, mais je ne pouvais pas trouver d'instructions au niveau utilisateur sur la façon de gérer cela.
Est-il possible de résoudre ce problème et d'installer Tether sur mon ordinateur portable Ubuntu? Et la solution est-elle quelque chose qui peut être expliqué en termes que quelqu'un qui ne sait rien de configure
ou make
peut comprendre?
Mise à jour:
Merci à la réponse de DropHammer99 ci-dessous , il semble que j'ai réussi à compiler le programme. Voici comment la commande XXFLAGS=-fpermissive make
s'est terminée après quelques minutes:
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
Malheureusement, cependant, lorsque j'ai exécuté le programme pour la première fois comme indiqué dans le fichier README
, il s'est écrasé avec l'erreur suivante:
~/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
Ce programme ne fonctionne-t-il pas ou puis-je faire quelque chose pour résoudre cette erreur de segmentation?
Cette erreur est le compilateur C++ qui se plaint d'un code utilisable mais moins qu'idéal. Avec les bonnes options de ligne de commande, vous pouvez indiquer au compilateur d'ignorer les problèmes de code de ce type et de continuer. Ce n’est pas toujours la meilleure solution, mais il faudra que les choses se compilent et fonctionnent.
Tout d’abord, lancez make clean
pour supprimer tout ce qui reste de votre ancienne tentative de compilation.
Ensuite, exécutez CXXFLAGS=-fpermissive make
pour essayer à nouveau avec le compilateur C++ en rétrogradant ces problèmes de code en avertissements.
J'ai été capable de reproduire votre erreur sur mon installation 16.10 64 bits, et cette solution de contournement a permis à la compilation de dépasser cette erreur pour moi.
Malheureusement, la construction semblait échouer davantage avec ce problème:
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
Je suis toujours à la recherche de cette question. Essayez la solution de contournement initiale, car votre système ne rencontrera peut-être pas le deuxième problème rencontré par le mien.
Mise à jour: J'ai pu éviter ce deuxième problème en indiquant à l'outil de configuration de sauter l'étape de capture instantanée. Malheureusement, je n'ai aucune idée de ce que l'étape de capture instantanée est censée faire et j'ai bien peur de ne remettre à plus tard un échec. Si vous souhaitez également essayer cette deuxième solution de contournement, voici une séquence de commandes à essayer:
make distclean
./configure --without-snapshot
CXXFLAGS=-fpermissive make
Il semble que l'application Clockwordmod Tether linux soit obsolète et nécessite un entretien important. J'ai compilé noeud à l'aide des réponses ci-dessus. Mais ça a donné
linux/run.sh: line 39: 25901 Segmentation fault $NODE/node tether.js
erreur. Quand j'ai vérifié sa version de noeud, j'ai vu que v0.8.14. Cette version est très très ancienne et n’a plus de documentation. Lorsque j'ai modifié le fichier run.sh et que je lui ai fait utiliser mon système, nodejs (v4.8.2), le message suivant a échoué: [TypeError: os.setupTun is not a function]
En tant qu'utilisateurs gnu/linux, nous devons trouver une autre solution alternative actualisée de cette application!
J'ai un correctif pour l'instant.
spaces.cc
dans node/deps/v8/src
bool PagedSpace::AdvanceSweeper
(environ la ligne 2274)return true;
au début de la méthode.Faire:
make distclean
./configure --without-snapshot
CXXFLAGS=-fpermissive make
Courir la longe:
Sudo linux/run.sh
Il se connecte et se trouve dans le gestionnaire de réseau!
Lorsque vous obtenez un segfault, c'est généralement une incompatibilité de bibliothèques qui provoque un comportement inattendu.
un segfault provoquera un dump principal, c’est un dump dans un fichier de l’état en cours du programme juste avant mon crash, vous pouvez l’utiliser pour déboguer pourquoi il s’est écrasé. C'est des choses complexes.
par défaut, le core dump est souvent désactivé. Pour le mettre en marche, vous devez vous assurer que vos paramètres ulimit permettent de créer un fichier core. Vous pouvez ensuite charger ce fichier dans un débogueur et l’afficher à l’endroit où il s’est bloqué.
configurer votre session pour permettre la génération de cœurs:
ulimit -c unlimited
puis exécutez votre programme et laissez-le segfault et créez un fichier appelé core
pour le diagnostiquer, vous pouvez utiliser le débogueur gnu GDB (où votre programme s'appelle programname et le fichier core s'appelle core)
Sudo apt-get install gdb
gdb programname core
le programme s'exécutera ensuite jusqu'au point où il segfaults et vous obtiendrez une invite, vous pourrez entrer "bt" pour obtenir une trace qui devrait vous indiquer l'origine du problème. Cette information sera utile dans un rapport de bogue même si vous ne la comprenez pas.
Le code souvent compilé est dépouillé de ses informations de débogage, ce qui peut rendre cette approche beaucoup plus difficile.
Pour plus d'informations - http://bl0rg.krunch.be/segfault-gdb-strace.html
Objet de: Bob Dickens Jr/BobDCoder, 2017 Je ne sais pas où répondre à cette question, alors j'espère que c'est le bon endroit.
J'ai vu quelques erreurs qui sont explicables dans l'erreur de construction et je souhaite les commenter car je suis sûr que cela les enlèvera et pourrait faire avancer la compilation.
./ run.sh: ligne 38: ../linux/adb: Aucun fichier ni répertoire de ce type Ce problème est lié au Tether/Linux que vous voulez trouvez un run.sh et il y a une ligne juste en dessous cd ../nodequi doit être édité. Recherchez ../ linux/adb et remplacez cette ligne par adb start-server si vous avez installé ADB, ou /votre/chemin/vers/adb adb start-server si vous avez simplement copié et collé adb dans/usr/bin/adb ou un autre répertoire.
Cela devrait supprimer cette erreur ../ linux/adb
J'utilise Ubuntu 16.04 et j'ai téléchargé le fichier rar que vous avez mentionné ci-dessus, puis lancé
./configure && make
J'ai réussi à construire sans erreur, voici mon make log for build , avez-vous essayé de faire make clean
puis ./configure && make
après avoir installé ces nouveaux packages?
@Questionneur
Voici ma sortie après avoir lancé ~/Documents/Tether/linux/run.sh
en tant que 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 }
Je suppose que les raisons pour lesquelles Tether ne fonctionne pas dans ce cas seraient les suivantes:
nodejs-legacy
n'est pas installé (à partir de run.sh
ligne 39: $NODE/node tether.js
),run.sh
ligne 38: ../linux/adb start-server
).Mais je n'ai pas eu d'erreur de faute de segmentation. Je n'ai aucune idée de Nodejs, avez-vous essayé si node
fonctionnait correctement en tant que commande autonome?
On dirait que votre ..adb/server start-server
a été exécuté avec succès. Il semble y avoir un problème avec $NODE/node tether.js
à la ligne 39. Ici, le fichier tether.js
est le premier argument de la commande node
. Je voudrais essayer d'exécuter node tether.js
comme une commande autonome sur le terminal.
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
Opérationnel.
Aucune édition de fichiers. Malheureusement, je ne sais pas si les deux premières commandes sont liées, car c’était quelque chose avec lequel j’étais en train d’expérimenter la nuit précédente.
Pour corriger les fautes de frappe de mes esprits défaillants
Source: Bob Dickens Jr/BobDCoder, 2017
J'ai vu une erreur qui peut être expliquée dans les résultats d'erreur de construction et souhaite suggérer plusieurs idées de correction, car je suis sûr que cette erreur sera supprimée de la photo et pourra éventuellement être complétée.
./ run.sh: ligne 38: ../linux/adb: aucun fichier ni répertoire de ce type Ce problème est évidemment lié à un fichier du répertoire Tether/Linux/dossier appelé run.sh qui doit être édité.
Il y a une ligne juste en dessous de cd ../node qui doit être modifiée pour Find (line 38) ../ linux/adb et remplacez cette ligne par adb start-server si vous avez effectué une installation automatique de ADB.
cd ../node
adb start-server
Une installation automatique aurait dû définir automatiquement le chemin dans la configuration ci-dessus!
Cependant, si vous avez créé manuellement un répertoire et copié adb dans/usr/bin/adb OR Si vous avez copié adb dans un autre répertoire, vous devrez peut-être modifier les lignes du code au dessous de. cd/votre/chemin/vers/adb adb start-server.
Cependant, puisque la ligne 7 lit cd ../node et vous place dans le répertoire des noeuds, il est difficile de savoir si le deuxième changement de répertoire (ligne 38) cd/some/custom/directory adb start-server provoquera à nouveau une erreur du compilateur ou run.sh car cela vous ferait sortir du répertoire des noeuds pendant son exécution.
La raison en est cd .. dans le code et doit être signalé. cd .. a été utilisé pendant des décennies pour sortir du répertoire actuel d’un niveau, donc .....
cd ../node
cd/usr/bin/adb
adb start-server
cd/YourAbsolute/chemin/retour/à/Tether/node
ou vous pouvez simplement essayer de supprimer le code de la ligne 37s cd ../node et d’essayer ce qui suit
cd/usr/bin/adb
adb start-server
cd/YourAbsolute/chemin/retour/à/Tether/node
Il m’est pas clair pour moi si Node doit être exécuté avant de démarrer le serveur adb ou si Node peut fonctionner après le démarrage du serveur adb (je pense logiquement que ce soit le dernier) fonctionnerait.
Avec un peu de jeu, cela devrait enlever le ../ linux/adb Error
Une autre astuce à essayer est courte, rapide et simple mais peut vaincre le problème. Faites une copie du fichier adb installé le plus récent et collez-le dans le répertoire tether/linux avec run.sh et laissez-le remplacer l'ancienne copie de adb, car cela ne fonctionne évidemment pas.
Honnêtement, je pense que le vieil adb est corrompu ou peut-être somnolent! lol
Je n'ai pas essayé cette solution moi-même, mais cela vaut au moins la peine d'essayer.