Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

327
Visualizações
¿Puedo ejecutar un binario de Linux desde una aplicación de Windows?

Quiero ejecutar un binario de Linux desde una aplicación QT que se ejecuta en W10. En QT tenemos QProcess para lanzar procesos adicionales. Sin embargo, dado que mi binario es para Linux, he pensado en dos posibles enfoques:

  1. Ejecutar el binario en un contenedor (es decir: Docker, Kubernetes, Singularity...).
  2. Ejecutando el binario a través de WSL (Ubuntu) bash.

En cualquier caso, la aplicación QT debería iniciar el proceso (el contenedor o el bash) y, a su vez, este proceso debería iniciar mi binario.

Estuve buscando en la web y no pude encontrar algo relacionado, lo que me hace pensar que sera dificil. Por esta razón, publico la pregunta para conocer la viabilidad de los enfoques propuestos.

EDITADO

Parece que WSL es más fácil, el problema es que el usuario tiene que haberlo instalado. Además de solicitar la contraseña de sudo al instalar un nuevo software a través de apt-get.

El binario que tengo que ejecutar solo existe para Linux, y digamos que la compilación cruzada se descarta debido a su complejidad. Además, esta aplicación necesita CGAL, BOOST, MPI, entre otras piezas de software.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Si desea usar WSL, simplemente puede ejecutar wsl myLinuxProgram --options .

Usar WSL es la forma más fácil, creo, ya que el directorio actual (PWD), es el actual, es decir, el mismo que el PWD de su aplicación Qt.

Puede leer la documentación de Microsoft para obtener más información: https://docs.microsoft.com/en-us/windows/wsl/interop

over 4 years ago · Santiago Trujillo Relatório

0

Si su binario de Linux depende de muchas cosas, realmente le sugiero que use Docker para Windows . Luego, tiene la oportunidad de crear previamente una imagen acoplable propia que coloque todo el software de dependencia y el binario de Linux que necesita para ejecutarlo.

Por supuesto, para permitir que su cliente lo use, debe ponerlo en dockerhub , registrar una cuenta para usted.

Entonces, la solución es simple: deje que la aplicación QT llame a la docker run para configurar un contenedor basado en su propia imagen, ejecútelo y también deje que el binario de Linux escriba el registro u otros en el volumen de montaje de enlace entre el contenedor de Linux y Windows . Después de ejecutarse, la aplicación QT obtiene la salida binaria de Linux de esta carpeta compartida.

Finalmente, doy un ejemplo mínimo viable para su referencia:

  • Supongamos que la carpeta compartida entre Windows y el contenedor de Linux es: C:\\abc\\log_share , se asignará al contenedor de Linux como carpeta /tmp . Por supuesto, debe permitir compartir el volumen haciendo clic con el botón derecho en el docker icon en el área de la bandeja de Windows y elija la configuración, como se describe aquí

  • Simplifique la aplicación de Windows como bat file y simplifique la imagen de la ventana acoplable como ubuntu , debe usar su propia imagen acoplable preconstruida con todas las dependencias en ella:

    win_app.bat:

     ECHO OFF ::New a shared folder with linux container RD /s/q C:\\abc\\log_share > NUL 2>&1 MKDIR C:\\abc\\log_share ::From windows call docker to execute linux command like 'echo' echo "Start to run linux binary in docker container..." docker run -it -v C:\\abc\\log_share:/tmp ubuntu:16.04 bash -c "echo 'helloworld' > /tmp/linux_log_here.txt" ::In windows, get the log from shared bind mount from linux echo "Linux binary run finish, print the log generated by the container..." type C:\\abc\\log_share\linux_log_here.txt
  • Simplifique el binario de Linux al igual que el echo command en Linux, las cosas de salida deben escribirse en el directorio compartido:

     echo 'helloworld' > /tmp/linux_log_here.txt

Ahora, ejecute el archivo bat con el comando win_app.bat :

 C:\abc>win_app.bat C:\abc>ECHO OFF "Start to run linux binary in docker container..." "Linux binary run finish, print the log generated by the container..." helloworld

Puede ver que la aplicación de Windows ya podría obtener cosas (aquí está helloworld ) que generó el binario de Linux desde el contenedor docker.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda