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

337
Visualizações
Can I execute a Linux binary from a Windows application?

I want to execute a Linux binary from a QT application running on W10. In QT we have QProcess to launch additional processes. However, since my binary is for Linux, I've thought of two possible approaches:

  1. Running the binary in a container (i.e.: Docker, Kubernetes, Singularity...).
  2. Executing the binary through WSL (Ubuntu) bash.

In any case, the QT application should initiate the process (the container or the bash) and, in turn, this process should launch my binary.

I've been searching on the web and I could not find something related, what makes me think that it will be difficult. For this reason, I am posting the question in order to know the viability of the proposed approaches.

EDITED

It looks like the WSL is easier, the problem is that the user has to have install ed it. Apart from requiring the sudo password when installing new software via apt-get.

The binary that I have to execute only exists for Linux, and let's say that cross-compiling is dismissed because of its complexity. Furthermore, this application needs CGAL, BOOST, MPI, among other pieces of software.

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

0

If you want to go with WSL, you can just run wsl myLinuxProgram --options.

Using WSL is the easiest way I believe as the current directory (PWD), is the current one i.e. the same as the PWD of your Qt app.

You can read Microsoft documenation for more info: https://docs.microsoft.com/en-us/windows/wsl/interop

over 4 years ago · Santiago Trujillo Relatório

0

If your linux binary depends on a lots of things, I really suggest you use docker for windows. Then, you have chance to pre-build an own docker image which put all dependency software also the linux binary you need to run in it.

Of course, to let your customer to use it, you should put it to dockerhub, register an account for yourself.

Then, the solution is simple: let the QT application to call docker run to setup a container base on your own image, execute it, and also let the linux binary to write the log or others to the bind mount volume among linux container & windows. After it run, the QT application fetch the linux binary output from this shared folder.

Finally, I give a minimal workable example for your reference:

  • Suppose the shared folder between windows & linux container is: C:\\abc\\log_share, it will mapped to linux container as /tmp folder. Of course you need to allow volume share by right click the docker icon in windows tray area & choose settings, like described here

  • Simplify the windows application as bat file, and simplfy the docker image as ubuntu, you should use your own prebuilt docker image with all dependency in it:

    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
    
  • Simplify the linux binary just as echo command in linux, the output things should be all write to shared directory:

    echo 'helloworld' > /tmp/linux_log_here.txt
    

Now, execute the bat file with command 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

You can see the windows application already could fetch things(here is helloworld) which generated by linux binary from docker container.

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