Como executar o arquivo gerado pelo Codoblacks?

Estou estudando programação ou seja sou iniciante, e gerei um projeto em c++ pelo code Codeblocks
Pesquisando descobri que o executável do programa fica aqui, mas não consigo abri-lo.


Pelo Codeblocks eu consigo compilar e abrir ele no gnome-terminal normal, mas por fora do IDE não abre.
Como eu executo esse programa ? por exemplo se eu quiser mandar só o executável pra alguém como ele vai conseguir abrir ?

Obs: Compilando o código no Windows até chega abrir o cmd porém da erro tbm.
Pesquisei bastante mas não achei nada que me ajuda, se alguém puder me ajudar agradeço mt.

Não seria ./Proj1 ?
E caso dê erro de permissão, basta apenas um chmod +x Proj1

Use o VSCode com a extensão C/C++ e instale os pacotes de compilação, gcc;

sudo apt install build-essential 

Para compilar o código: gcc -o NomeExemplo Arquivo.c

Sim já tentei, mas não executa corretamente.
Segue o exemplo, a esquerda é a compilação do Codeblocks e a direta é pelo comando no terminal.

Mesmo assim a ideia seria executar apenas com dois clicks.

Mas tipo se quiser eu executar corretamente o código só clicando nele
Imagina que vou mandar isso pra alguém que não tem sabe linha comando.

Infelizmente até aonde eu sei, o único executável que roda com 2 cliques é o .exe (apesar de ser possível rodar um executável no linux com 2 cliques, o procedimento vai depender da interface gráfica), então a única maneira “universal” de rodar um executável linux (.ELF) é pelo querido e amigável terminal.

1 curtida

Instalar a extensão code-runner e seja feliz;
1- Abra o VSCode e navegue até as configurações, busque por “Run In Terminal”, como ilustra a imagem a baixo:


2- Clique no seguinte ícone:
image
3- Dentro da janela que se abriu, coloque o seguinte código:

"code-runner.executorMap": {
        "javascript": "node",
        "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
        "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "php": "php",
        "python": "python -u",
        "perl": "perl",
        "perl6": "perl6",
        "ruby": "ruby",
        "go": "go run",
        "lua": "lua",
        "groovy": "groovy",
        "powershell": "powershell -ExecutionPolicy ByPass -File",
        "bat": "cmd /c",
        "shellscript": "bash",
        "fsharp": "fsi",
        "csharp": "cd $dir; clear && dotnet run $fileName",
        "vbscript": "cscript //Nologo",
        "typescript": "ts-node",
        "coffeescript": "coffee",
        "scala": "scala",
        "swift": "swift",
        "julia": "julia",
        "crystal": "crystal",
        "ocaml": "ocaml",
        "r": "Rscript",
        "applescript": "osascript",
        "clojure": "lein exec",
        "haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",
        "rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
        "racket": "racket",
        "scheme": "csi -script",
        "ahk": "autohotkey",
        "autoit": "autoit3",
        "dart": "dart",
        "pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
        "d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",
        "haskell": "runhaskell",
        "nim": "nim compile --verbosity:0 --hints:off --run",
        "lisp": "sbcl --script",
        "kit": "kitc --run",
        "v": "v run",
        "sass": "sass --style expanded",
        "scss": "scss --style expanded",
        "less": "cd $dir && lessc $fileName $fileNameWithoutExt.css",
        "FortranFreeForm": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran-modern": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran_fixed-form": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
    }

(ou escreva "code-runner.executorMap" e de enter, a intellisense fará o resto)
4- Salve;
5- Crie um HelloWorld.cpp no VSCode e execute o código clicando no play, canto superior direito
(o print é um Hello, World! em C puro)

Até onde sei, o código terá de ser compilado no Windows para rodar no windows e no Linux para rodar no Linux, pois o C é uma linguagem compilada, a qual muda de SO para SO, então essa mesma pessoa vai ter que aprender a compilar do mesmo jeito. É dever do Programador, no mínimo, saber usar um dir/ls, né

Ah, e o nome da IDE é Code::Blocks :dotted_line_face:

Se desenvolver uma aplicação gráfica, ao compilar poderá sim executar com “dois clicks” como você quer, agora se desenvolver uma aplicação para linha de comando, e quiser executar sem ser através do terminal, poderá criar um arquivo .desktop em ~/.local/share/applications contendo a flag Terminal=true, permitindo visualiza-la como uma aplicação normal no menu.

Sobre distribuir é pra isso que temos os pacotes como por exemplo .deb, onde está descrito basicamente como essa aplicação deve se instalar e/ou se comportar, permitindo qualquer pessoa abrir através de um menu por exemplo, abstraindo toda a parte a qual não é de interesse, há aqueles que não são desenvolvedores, e nem tem a obrigação de conhecer a parte técnica de uma aplicação…

Mas o codeblocks ja não gera um .exe ? não deveria ser possível abrir clicando?

No windows sim, no linux ele gera um executável específico de linux, ou seja, o windows não consegue executar o de linux e vice versa (de forma nativa, claro.).

1 curtida

Pensei em criar um script.sh para executar o programa só clicando no script
Porém ele abre como bloco de notas, ja dei permissão de execução mas ele continua abrindo como bloco de notas
Mesmo usando : #!/bin/sh

Não, pois a compilação do Windows é uma e a do Linux é outra

Mas um scrpit shell simples só dá de executar via terminal, isso levando em conta que ele já tenha obtido permissão de execução. Isso é dar dois passos para trás e zero para frente no seu caso. De verdade, larga o medo de linha de comando, zé. Tu tá estudando programação e não design gráfico. Se quer algo drag and drop, veja JavaFX ou WindowsForms

Windows gera: .exe
Linux gera: .elf
macos gera: .mach-o

1 curtida

Projeto criado no CodeBlocks e rodados por lá


Para executar em outra máquina Linux, basta rodar ./TesteCPP

A única diferença para o Windows é que, ao dar dois cliques, o cmd será aberto com a mensagem. Não sei qual seria a dificuldade :thinking:

Cara, eu quero ver se ter uma forma de fazer isso sem ter que escrever, só por questão de curiosidade.
Eu sei usar os comandos, eu sei que no Windows funciona diferente.

Sistemas diferentes, formas diferentes.

esse definitivamente é o jeito mais fácil, foi assim que aprendi

edit: o nome “codeblocks” ta errado no título

1 curtida

Com dois cliques você precisa de um laucher porque no linux o console é oculto por padrão

1 curtida
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
# É isso que vc precisa, essa linha faz o comando ser executado no terminal
Terminal=true
# Na linha abaixo coloque o caminho pro
# executável, lembra de colocar uma \ antes dos espaços
Exec=/caminho/para/o/executável
Name=Nome do app
Icon=application-x-executable
1 curtida