Erro na Compilação???

1. Erro na Compilação???

alessandro
sandroex

(usa Ubuntu)

Enviado em 01/02/2014 - 13:00h

Galera é o seguinte, estou acostumado a programar em java, mas atualmente estou precisando fazer algumas soluções em c++ e c, eu estava usando o DEV++ no windows e ao atualiza-lo aconteceu que tudo que eu tentava compilar falava que eu nao tinha permissão, baixei o codeblock e o problema continuou.. para tenta solucionar o problema e como eu ja tinha particionado todos os meus sistemas com o ubuntu, eu parti para o linux, lá eu uso geralmente o gcc só que eu acho meio massante fazer nele (editando no vi ou vim e compilando no gcc), baixei o codeblock e para o meu espanto o problema persiste.

Descrição do Problema em ambas plataformas:

Eu consigo editar e compilar o codigo, mas apenas 1 vez, caso eu queria fazer qualquer tipo de ajuste e tente compila-lo novamente o programa diz que eu nao tenho permissão.

A unica solução que eu conseguir fazer para burlar foi á seguinte, logar-me como root e executar o gcc programa.c programa >>>./programa dai ele funciona porém é muito massante fazer isso, imagina voce fazendo isso varias e varias vezes, horrível!!!

Eu gostaria de uma solução para editar e compilar quantas vezes eu quiser qualquer programa de C e C++ dentro da IDE que eu escolher. Estou tentando baixar o Eclipse para fazer um teste. Lembrando que no windows eu conseguir por muito tempo usar livremente o DEV++ e o problema apareceu quando eu atualizei ele e no linux pelo gcc eu consigo normalmente e no Codeblock ele dá erro, para ter uma noção ele até aparece o simbolo do programa compilado com um cadeado em cima.


  


2. Re: Erro na Compilação???

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 01/02/2014 - 14:43h

so uma pergunta, esse codeblocks que vc instalou é o do site do codeblocks ou o do repositório do ubuntu?

de todo modo veja as com que permissões esses arquivos estão sendo criados :

acesse a pasta onde está o programa :

 cd /caminho 


e lista as permissões:

 ls -la 



3. sobre a instalação

alessandro
sandroex

(usa Ubuntu)

Enviado em 01/02/2014 - 15:15h

instalei direto do repositório do ubuntu. Vc acha que eu deveria mudar a permissão do programa? é possível isso? Porque como eu falei, compilando a primeira vez ele funciona, a segunda não, ai eu como root executo o comando no console gcc ai funciona...

Uma OBS: O codigo fonte compilado ele gera o arquivo que eu executo, esse arquivo mesmo quando eu mudo todas as permissões dele o programa (codeblock) não consegue mais salva nele, fica dizendo que o arquivo não existe.


4. Re: Erro na Compilação???

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 01/02/2014 - 22:21h

olha isso vai depender muito de onde vc está salvando esses arquivos, pq se não for em alguma pasta dentro da pasta de usuário, com certeza terá problemas de permissão.

sem ter mais detalhes fica dificil de ajudar, mas uma coisa que pode resolver de imediato, seria vc executar o programa como root, basta digitar no terminal:

gksu codeblocks 


ou muda lá no atalho do programa, clique como auxiliar do mouse ->"propriedades" e muda o comando para iniciar ele de "codeblocks" para "gksu codeblocks" assim toda vez que vc executar ele será executado como root, mas o problema é que ele também irá criar arquivos como root, ou seja, para editar esses arquivos como usuário comum não vai conseguir.


5. Re: Erro na Compilação???

Paulo
paulo1205

(usa Ubuntu)

Enviado em 03/02/2014 - 18:35h

sandroex escreveu:

instalei direto do repositório do ubuntu. Vc acha que eu deveria mudar a permissão do programa? é possível isso? Porque como eu falei, compilando a primeira vez ele funciona, a segunda não, ai eu como root executo o comando no console gcc ai funciona...


Um dos casos em que não é possível sobrescrever um arquivo no UNIX é quando o arquivo é um executável de um programa que está em execução no momento. Será que seu programa não permanece executando alguma coisa em background, quando você pensa que ele terminou.

Mas existem outras possibilidades também. Qual o tipo do sistema de arquivos que vocês está usando? É algo nativo do Linux, ou um NTFS ou FAT da vida, cujas permissões não mapeiam muito bem nas permissões do UNIX?

Uma OBS: O codigo fonte compilado ele gera o arquivo que eu executo, esse arquivo mesmo quando eu mudo todas as permissões dele o programa (codeblock) não consegue mais salva nele, fica dizendo que o arquivo não existe.


Não entendi o que você quis dizer.

Um erro que eu já vi muita gente cometer é sobrescrever o código fonte com o executável (i.e. "gcc x.c -o x.c"). Tome o cuidado de nunca fazer isso.


6. erro continua

alessandro
sandroex

(usa Ubuntu)

Enviado em 03/02/2014 - 20:57h

eu tenho certeza q o console nao esta aberto assim como qlq forma de execução do arquivo, executo e fecho o mesmo sempre(acho que foi isso que vc quis dizer), a forma de compilação gcc programa.c -o programa ele funciona normal como root... vou tenta explicar melhor.. vamos supor que o meu programa exibi na tela a frase "OLA MUNDO", eu compilo ele, executo e ele roda de perfeitamente, entao eu volto no meu IDE, no caso o codeblock e nele mudo para "OLA UNIVERSO", ele nao permite fazer isso, fala que eu nao tenho permissão msm o arquivo estando aberto. Eu tentei mudar a permissao do codigo fonte "programa.c", ai o erro muda, na hora de compilar ele manda a mensagem que o arquivo nao existe. Volto á dizer, executando direto no meu console gcc ele funciona normal, apenas nao funciona na ide.... Desculpa ai galera se é meio inutil a minha duvida, é que eu programo em java e é muito comodo e confortável vc fazer tudo na ide, para que todos possam entender, eu estou editando o arquivo no "vim" e depois compilo ele no console.. é muitoooo xatooo rsrss, obrigado por estarem ajudando..


7. Re: Erro na Compilação???

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 03/02/2014 - 22:25h

é aí que pode estar o x da questão, pelo erro que vc está relatando é problema de permissão.
no caso pelo que entendi, vc criou esse arquivo pelo vim, provavelmente rodando o vin como root, se foi isso só quem tem permissão de alterar esse conteúdo é o root.

então rodando o codeblocks como usuário comum ele vai abrir o arquivo, mas não vai escrever, pq vc não tem permissão de escrita.

faça o teste, crie esse arquivo pelo codeblocks e compile pelo codeblocks, depois feche e abra denovo e tente editar, mas sem rodar o codeblocks como root.

para eu poder confirmar se é o que eu estou pensando, entra na pasta do seu arquivo e digita:

 ls -l  


depois posta a saída somente das permissões do arquivo *.c ex.:

-rw-r--r-- 1 meu_user users 41603 Dez 11 21:15 arquivo.c
se tiver como acima não é erro de permissões

agora se sair algo assim:

-rw-r--r-- 1 root root 41603 Dez 11 21:15 arquivo.c

aí é exatamente isso, vc criou o arquivo como root e está tentando editar como usuario comum, aí não vai mesmo.




8. erro continua

alessandro
sandroex

(usa Ubuntu)

Enviado em 04/02/2014 - 09:25h

Então acho que eu nao soube me expressar.. fazendo pelo vim ele funciona perfeitamente... mas eu criando pelo codeblock o sistema nao aceita, eu vou tentar oque foi sujerido vou executar o codeblock como root pra ver se funciona... engraçado é que esse erro também acontece no windows... talvez seja erro no programa o dev++ começou a dar erro no windows depois que eu instalei o codeblock..


9. Re: Erro na Compilação???

Paulo
paulo1205

(usa Ubuntu)

Enviado em 04/02/2014 - 11:09h

Eu não sou fã da ideia de rodar coisas como root para contornar problemas.

Acho melhor tentar chegar à raiz (sem trocadilhos) do problema, vendo qual operação dá o erro que você está recebendo. Eu recomendaria, portanto, executar o Code::Blocks sob o strace (i.e.: "strace -f -o /tmp/arquivo_de_saida -s 1024 /caminho/do/c_b", lembrando que, como o C::B é uma aplicação gráfica, as interações da interface gráfica podem gerar milhões de eventos -- eu sugiro fechar o C::B assim que o erro ocorrer, para que a captura não fique gigantesca).

Uma vez com a captura de chamadas ao kernel, procure no arquivo pelas ocorrências de EACCES (permission denied) ou EPERM (operation not permitted). A elas deve estar associado um nome de arquivo (ou número de descritor de arquivo, que você pode rastrear para chegar ao nome), bem como uma operação que provocou a falha. Examinando esse contexto, você provavelmente vai saber com clareza o porquê do erro.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts