Estou *tentando* me aventurar no Linux, mas tá foda. Gostaria de saber o que passa aqui.

Estou *tentando* me aventurar no Linux, mas tá foda. Gostaria de saber o que passa aqui.

por Renan Fichberg -
Número de respostas: 6

Depois de ter instalado o Code::blocks no meu Ubuntu, estou tendo o seguinte problema:

Logo depois de ter configurado o C::B do jeito que a página do IME pede tentei o básico, clássico, programa "Hello, world!".  Aparentemente fluiu. Apertei o "Build&Run" do próprio compilador só para ver o meu printf lá e a única coisa que consegui foi um "Permission Denied".

O que apareceu no meu "Build Log" no compilador foi o seguinte:

Nothing to be done.
Checking for existence: /home/fichberg/Documents/R/IME/MAC0122/teste
Executing: xterm -T '/home/fichberg/Documents/R/IME/MAC0122/teste' -e /usr/bin/cb_console_runner "/home/fichberg/Documents/R/IME/MAC0122/teste" (in /home/fichberg/Documents/R/IME/MAC0122)
Process terminated with status 0 (0 minutes, 34 seconds)

Nota: nem compilando está. Não tem a extensão ".c" em "teste".

 

A janela que abriu com o "Build&Run" mostra o seguinte:

sh: 1: /home/fichberg/Documents/R/IME/MAC0122/teste: Permission denied

Process returned 126 (0x7E) execution time: 0.002 s

Press enter to continue

 

 

Enfim. O que pega aqui? Eu não faço idéia do que está acontecendo e como arrumar isso. :~

 

Desde já grato.

Em resposta à Renan Fichberg

Re: Estou *tentando* me aventurar no Linux, mas tá foda. Gostaria de saber o que passa aqui.

por Ricardo Mikio Morita -

Oi Renan, eu também não manjo muito de linux mas não pode ser problema de permissão ? tenta dar !chmod u+rwx teste" (para dar permissao pra pasta).

Eu, na verdade, gosto de usar um editor de texto pra escrever e depois compilar pelo gcc entao se o erro nao for esse eu nao vou saber como resolve X.X

Em resposta à Renan Fichberg

Re: Estou *tentando* me aventurar no Linux, mas tá foda. Gostaria de saber o que passa aqui.

por José Coelho de Pina -

Oi Renan,

Você podia colocar aqui o resultado da compilação (Build -> Compile current file)?

Seria legal se você tentasse, como sugere o Ricardo, compilar na linha de comando:

meu_prompt> gcc -Wall -ansi -O2 -pedantic -Wno-unused-result teste.c -o teste
Em resposta à José Coelho de Pina

Re: Estou *tentando* me aventurar no Linux, mas tá foda. Gostaria de saber o que passa aqui.

por Ricardo Mikio Morita -

Aproveitando o gancho, como eu faço para criar um "atalho" para o comando de gcc? Na aula quando vc da "make alguma coisa" ele ja compila ne? Eu consigo fazer algo parecido no Mac OS Coelho? e no Linux? Pode me indicar algum link que de exemplos?

Em resposta à Ricardo Mikio Morita

Re: Estou *tentando* me aventurar no Linux, mas tá foda. Gostaria de saber o que passa aqui.

por Andrew Kurauchi -

Oi Ricardo,

Se você simplesmente quiser escrever menos na hora de compilar você pode criar um alias. Por exemplo:

alias compila='gcc -Wall -ansi -pedantic -O2'

Então:

compila seuprograma.c -o seuprograma

Você pode colocar a criação do alias no seu ~/.bashrc (ou ~/.bash_profile no Mac OS) para tê-lo disponível sempre que abrir um terminal novo.

Tem um tutorialzinho de como usar o make aqui: http://mrbook.org/tutorials/make/

A ideia é basicamente a seguinte:

Quando você executa 

make

O make vai procurar por um arquivo chamado Makefile. Nesse arquivo você pode definir o que fazer (no caso compilar seu arquivo), por exemplo:

all:
[tab]gcc -Wall -ansi -pedantic -O2 seuprograma.c -o seuprograma

Assim, se você executar o comando make no terminal o seuprograma.c será compilado para seuprograma.

Você pode também definir vários targets a serem construídos pelo make. Por exemplo, se você tiver dois programas para serem compilados é possível fazer o seguinte:

all: programa1 programa2

 

programa1:
[tab]gcc -Wall -ansi -pedantic -O2 programa1.c -o programa1

 

programa2:
[tab]gcc -Wall -ansi -pedantic -O2 programa2.c -o programa2

Assim, se você executar:

make

Ambos os programas serão compilados (target all). Para compilar somente o programa1 basta executar:

make programa1

Analogamente para o programa2.

Em linhas gerais o Makefile pode ser definido como:

[target]: [dependencia 1] [dependencia 2] ... [dependencia n]
[tab][comandos a serem executados]

E sim, no Mac OS é exatamente a mesma coisa sorriso

Em resposta à Andrew Kurauchi

Re: Estou *tentando* me aventurar no Linux, mas tá foda. Gostaria de saber o que passa aqui.

por Ricardo Mikio Morita -

Valeu pela resposta Andrew. Fiz um alias e agora posso digitar bem menos para compilar meus arquivos :]

Eu dei uma olhada no makefile, pelo que entendi é para projetos maiores em que você tem que recompilar diversos arquivos enquanto escreve/debuga, não? Eu vou testar quando tiver um programa maior mas por enquanto o alias já resolve meu problema.

Por um acaso dá pra usar o make com coringas? pergunto isso pq pelo que li você tem que identificar os arquivos que você quer compilar dentro do Makefile pra ele funcionar. Mas e se eu quiser dar make mais um argumento para ele compilar um arquivo qualquer, similar a um alias?

A melhor forma de mexer com o makefile é criar ele, e a medida que o projeto for ficando com mais arquivos, vai atualizando o makefile?

De qq maneira valeu pela ajuda!

Em resposta à Ricardo Mikio Morita

Re: Estou *tentando* me aventurar no Linux, mas tá foda. Gostaria de saber o que passa aqui.

por Renan Fichberg -

Gente, foi mal a demora. Eu estava sem PC esse tempo todo. Agora que o EP já lançou, eu pelo momento vou deixar isso quieto. Assim que eu dispor de mais tempo eu tento de novo e mando um feedback. Valeu pelas respostas!