Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Erro ao executar app



  • Não sei bem se o nome correto seria esse já que uso Linux, mas lá vai minha duvida, eu criei uma aplicação que lê dados da porta serial e plot em um gráfico, ate ai tudo ok , dei um build no projeto e tenho um arquivo aparentemente executável que funciona sem estar executando pelo qt.Quando fui executar o arquivo em outra maquina com o Linux da o seguinte erro :

    error while loading shared libraries: libQt5SerialPort.so.5: cannot open shared object file: No such file or directory

    Alguem pode me ajudar?

    Grato



  • Tive um problema parecido, só que com windows...até agora não sei a causa, mas eu dei build novamente, só que em outra pasta. Ele gerou um outro executável que passou a funcionar....
    Você pode tentar fazer isso....mas é só um chute...



  • O erro por si só já explica. No seu PC você tem todas as bibliotecas necessárias, por isso funciona. No outro PC, no caso, está faltando essa aí do erro. Precisa instalar os pacotes do qt5 antes de rodar seu programa.



  • OK, maia vou te que instalar todo ambiente ou existe um pacote tipo runtime, só com as bibliotecas necessárias



  • Existe. Eu não sei o nome certo, porque uso o Windows, mas dá uma olhada no seu gerenciador de pacotes que você acha. Pesquisa por "qt5".



  • Olá,
    Terá que copiar junto com o executável todas as bibliotecas (.so) necessárias para rodar teu programa.
    No linux: você tem que indicar para o programa a localização das bibliotecas pela variavel de ambiente 'ld_library_path', ou na compilação do programa através de 'rpath'.
    No windows: pela variavel de ambiente 'PATH'.



  • Essa é uma outra opção, mas o pacote é melhor porque assim as bibliotecas serão compartilhadas por todos os programas feitos com Qt. Do contrário, ele teria que copiar esses arquivos junto de cada executável.



  • Tentei e só consegui achar qt4 para desenvolvimento acho que e o próprio qtcreator, alguem sabe como ?seria o caso de tentar o fórum internacional ?



  • A disponibilidade do pacote depende mesmo é da distribuição. Vai ver a sua não tem então. Nesse caso, copiar as bibliotecas, como o @ReinaldoJr sugeriu pode ser a saída. Aqui tem umas explicações:

    http://doc.qt.io/qt-5/linux-deployment.html#creating-the-application-package



  • Leonardo, realmente algumas distribuições linux tem pacotes prontos, porém:

    1. Geralmente esses pacotes estão desatualizados, sendo assim, se você utilizar a versão mais recente do Qt, provavelmente dará erro.
    2. Linux tem pacotes prontos, alguns apenas, e windows oficialmente não tém.

    Quanto a disponibilidade das libs para vários programas, em linux basta setar globalmente o 'path_das_libs' em LD_LIBRARY_PATH que todos os programas passam a buscar também neste 'path_das_libs'. Em windows setar em PATH, que também todos o programas iram buscar em 'path_das_libs'.

    Fica á dica!



  • Valeu galera, fiz uns teste e copiei libQt5SerialPort.so.5 para a pasta /usr/lib, dai minha aplicação abre, só que quando peço pra detectar as portas seriais aparece o seguinte erro:

    undefined symbol: _ZN7QString18toLocal8Bit_helperEPK5QChari

    to em uma maquina com linux sem o qt creator instalado.



  • https://www.youtube.com/watch?v=wti-VDG5HrQ Não precisa instalar o SDK em todas as maquinas qfor usar, no windows basta abrir oshell e digitar windeployqt "<pastaparaoezecutavel" que ele gera uma sand box pro seu app, no linux é um pouco diferente http://doc.qt.io/qt-5/linux-deployment.html


Log in to reply