Não é possível fazer o Clockwordmod Tether no Ubuntu 16.10

6

Estou tentando instalar o Clockwordmod Tether no meu laptop Ubuntu 16.10 para facilitar o tethering via USB com a aplicação correspondente no Google Play .

Eu fiz o download e extraí o arquivo Tether tar . As instruções para instalação são muito simples. Basta executar o seguinte em um terminal:

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

Mas quando executo make , sempre termina com este erro:

../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

Procurando na net, foi sugerido instalar o seguinte:

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

Mas isso não ajudou. Eu também vi que poderia ter algo a ver com um problema de versão do Python, mas não consegui encontrar instruções no nível do usuário sobre como lidar com isso.

Existe uma maneira de resolver isso e instalar o Tether no meu laptop Ubuntu? E a solução é algo que pode ser explicado em termos de que alguém que não saiba nada sobre configure ou make possa entender?

Atualização:

Graças a resposta do DropHammer99 abaixo , parece que consegui compilar com sucesso o programa. É assim que o comando XXFLAGS=-fpermissive make terminou depois de alguns minutos:

  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

Infelizmente, no entanto, quando executei o programa pela primeira vez conforme instruído no arquivo README , ele caiu com este erro:

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

Esse programa simplesmente não funciona ou há algo que eu possa fazer para resolver esse erro de falha de segmentação?

    
por Questioner 01.01.2017 / 17:14

8 respostas

5

Esse erro é o compilador C ++ que reclama sobre algum código utilizável, mas menos que ideal. Com as opções de linha de comando corretas, você pode dizer ao compilador para ignorar problemas de código como esse e continuar. Esta nem sempre é a melhor solução, mas vai fazer com que as coisas compilem e funcionem.

Primeiro, execute make clean para se livrar de qualquer coisa deixada para trás na sua tentativa de compilação antiga.

Em seguida, execute CXXFLAGS=-fpermissive make para tentar novamente com o compilador C ++ fazendo downgrade desses problemas de código aos avisos.

Consegui reproduzir seu erro na minha instalação de 16 bits de 64 bits e essa solução alternativa permitiu que a compilação passasse esse erro para mim.

Infelizmente, a versão pareceu falhar ainda mais com esse problema:

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

Ainda estou investigando esse problema. Experimente a solução inicial, pois talvez seu sistema não acerte o segundo problema que o meu fez.

Atualizar : consegui contornar esse segundo problema dizendo à ferramenta de configuração para pular a etapa de snapshot. Infelizmente, não tenho idéia do que a etapa de snapshot deve fazer, e tenho medo de estar adiando uma falha até mais tarde. Se você quiser tentar esta segunda solução também, aqui está uma sequência de comandos para tentar:

make distclean
./configure --without-snapshot
CXXFLAGS=-fpermissive make
    
por DropHammer99 13.01.2017 / 22:27
2

Parece que o aplicativo Clockwordmod Tether linux está desatualizado e precisa de uma manutenção significativa. Eu compilei o nó com a ajuda das respostas acima. Mas deu

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

erro. Quando eu verifico sua versão do nó, vi que v0.8.14 . Esta versão é muito antiga e está sem documentação. Quando eu editei o arquivo run.sh e fiz com que ele usasse o meu sistema instalado nodejs (v4.8.2), ele falhou a mensagem: [TypeError: os.setupTun is not a function]

Como usuários do gnu / linux, precisamos encontrar outra solução alternativa e atualizada para esse aplicativo!

    
por csonuryilmaz 24.09.2017 / 06:46
2

Eu tenho uma correção por enquanto.

  • Ir no arquivo: spaces.cc in node/deps/v8/src
  • Ir para a função: bool PagedSpace::AdvanceSweeper (aproximadamente a linha 2274)
  • Adicione return true; no início do método.

Faça:

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

Executar amarração:

sudo linux/run.sh

Ele se conecta e está no gerenciador de rede!

    
por NxGraphics 16.07.2017 / 14:39
1

Quando você obtém um segfault, geralmente é uma incompatibilidade de bibliotecas causando um comportamento inesperado.

um segfault causará um core dump, este é um dump para um arquivo do estado de execução do programa pouco antes de eu travar, você pode usar isso para depurar porque ele travou. Isso é coisa complexa.

por padrão, o core dumping normalmente é desativado, para ativá-lo você precisará garantir que suas configurações ulimit permitam que um arquivo principal seja feito, você pode carregar esse arquivo principal em um depurador e mostrar onde ele está fiquei preso.

para configurar sua sessão para permitir que os núcleos sejam gerados:

ulimit -c unlimited

em seguida, execute seu programa e permita que ele segfault e crie um arquivo chamado core

para diagnosticar você pode usar o depurador do Gnu GDB (onde seu programa é chamado de programname e o corefile é chamado core)

sudo apt-get install gdb
gdb programname core

o programa irá rodar até o ponto em que ele segfaults e você receberá um prompt, você pode digitar "bt" para obter um backtrace que deve apontar você na origem do problema. Esta informação será usada em um relatório de bug mesmo que você não a entenda.

Muitas vezes, o código compilado é removido de suas informações de depuração, o que pode dificultar muito essa abordagem.

Para mais informações, link

    
por Amias 16.01.2017 / 12:08
1

Re de: Bob Dickens Jr / BobDCoder, 2017 Não sei onde responder a este problema, por isso espero que este seja o lugar certo.

Eu vi alguns erros que podem ser explicados no erro de compilação e desejo comentá-los, pois tenho certeza de que ele eliminará os erros e poderá promover a compilação.

./ run.sh: linha 38: ../linux/adb: Não existe tal arquivo ou diretório Esse problema está relacionado ao Tether / Linux, você encontrará um run.sh e não há uma linha logo abaixo de cd ../nodeque precisa ser editada. Encontre ../ linux / adb e altere esta linha para adb start-server se você fez uma instalação do ADB, ou / seu / caminho / para / adb adb start-server se você simplesmente copiou e colou o adb em / usr / bin / adb ou algum outro diretório.

Isso deve remover o ../ linux / adb erro

Estou usando o Ubuntu 16.04 e baixei o arquivo rar que você mencionou acima e executei

./configure && make

Consegui criar sem erros, aqui está o meu registro para compilação , você já tentou fazer make clean e depois ./configure && make depois de instalar esses novos pacotes?

Atualização:

@Questioner

Aqui estava minha saída depois que eu corri ~/Documents/Tether/linux/run.sh como 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 }

Eu acho que as razões pelas quais o Tether não está sendo executado neste caso seria:

  1. nodejs-legacy não está instalado (de run.sh linha 39: $NODE/node tether.js ),
  2. O Android SDK não está instalado (em run.sh line 38: ../linux/adb start-server ).

Mas eu não recebi nenhum erro de falha de segmentação. Eu não tenho idéia sobre o Nodejs, você tentou se node funciona corretamente como um comando autônomo?

Parece que o seu ..adb/server start-server foi executado com sucesso. Parece que há um problema com $NODE/node tether.js na linha 39. Aqui, tether.js file é o primeiro argumento para o comando node . Eu tentaria executar node tether.js como um comando autônomo no terminal.

    
por Abel Tom 13.01.2017 / 07:50
0

Para corrigir erros de digitação da minha mente

Re de: Bob Dickens Jr / BobDCoder, 2017

Eu vi um erro que é explicável nos resultados do erro de compilação e desejo sugerir vários pensamentos de correção, pois tenho certeza de que ele tirará esse erro da imagem e poderá promover a compilação e a criação.

./ run.sh: linha 38: ../linux/adb: Nenhum arquivo ou diretório desse tipo Este problema está obviamente relacionado a um arquivo na pasta / diretório Tether / Linux chamado run.sh que precisa ser editado.

Existe uma linha logo abaixo de cd ../ node que precisa ser editada para Localizar (linha 38) ../ linux / adb e alterar essa linha para adb start-server se você fez uma instalação automática do ADB.

cd ../ node

adb start-server

Uma instalação automática deve ter definido automaticamente o caminho na configuração acima!

No entanto, se você criou manualmente um diretório e copiou o adb para / usr / bin / adb OU Se você copiou o adb em algum outro diretório, talvez seja necessário alterar as linhas para o código abaixo. cd / seu / caminho / para / adb adb start-server .

No entanto, como a linha 37 cd ../ node e coloca você no diretório do nó, não está claro se a segunda alteração no diretório (linha 38) cd / alguns / custom / diretório adb start-server fará com que o compilador ou run.sh volte a apresentar erro, pois isso o levaria para fora do diretório de nós à medida que fosse executado.

A razão para isso é cd .. no código e precisa ser destacada. O cd .. tem sido usado há décadas para sair do diretório atual em um nível, então ...

  • (run.sh) está no diretório tether / linux para iniciar e onde está sendo executado.
  • Mas no próprio código run.sh , quando é executado, ele diz ao run.sh para sair do subdiretório / linux para / Tether com uma porção "cd .." de (linha 37) o comando!
  • Com o término do comando na linha 37 / node , ele também diz para alternar para o diretório node . . . . Se esse for o caso, tomei a liberdade de recodificar a linha 37, 38 e uma nova linha para corrigir esse problema.

cd ../ node

cd / usr / bin / adb

adb start-server

cd / YourAbsolute / caminho / voltar / para / Tether / node

ou você pode simplesmente tentar remover o código da linha 37s cd ../ node e tentar o seguinte

cd / usr / bin / adb

adb start-server

cd / YourAbsolute / caminho / voltar / para / Tether / node

Não está claro para mim se o Node precisa ser executado antes de iniciar o servidor do adb ou se o Node pode ser executado depois que o servidor do adb foi iniciado (acho que, logicamente, o último) funcionaria.

Com um pouco de reprodução, isso deve remover o ../ linux / adb Error

    
por Bob Dickens 10.10.2017 / 10:57
0

Outro truque para tentar é curto, rápido e simples, mas pode derrotar o problema. Faça uma cópia do novo arquivo adb instalado e cole-o no diretório tether / linux com run.sh e deixe-o sobrescrever a cópia mais antiga do adb, pois obviamente não funciona.

Eu sinceramente acho que o antigo adb é corrupto ou talvez apenas sonolento! lol

Eu não tentei essa solução por conta própria, mas pelo menos vale a pena tentar.

    
por Bob Dickens 10.10.2017 / 11:24
0

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 

Operacional.

Nenhuma edição de arquivos. Infelizmente não tenho certeza se os dois primeiros comandos estão relacionados, já que isso era algo que eu estava experimentando na noite anterior.

    
por 25.01.2019 / 15:03