alias gcc = 'gcc -fmissmissive' ou modificando o script ./configure

2

Estou compilando um projeto bastante grande da fonte. A compilação sempre termina com: erro: conversão inválida de "const char *" para "char *" [-fmissmissive]

Eu já compilei este projeto há um ano. Então eu sei uma solução para isso. Na verdade, encontrei mais soluções:

  1. Adicionando um typecast à linha apropriada do código do cpp (Ele foi para um número infinito de mudanças em cada arquivo. Então eu encontrei a próxima solução.)
  2. Modificando um makefile para compilar esse arquivo com a opção -fmissmissive. (Eu tive que modificar um monte de linhas em cada makefile. Então eu encontrei uma solução ainda melhor.)
  3. "g ++" ou "gcc" foi armazenado em uma variável, então eu adicionei -feativo a essas variáveis.

Esta é a melhor solução que tenho. É suficiente adicionar essa opção a cada makefile uma vez. Infelizmente este software possui um grande número de subdiretórios. Então eu preciso modificar mais de 100 makefiles. Demorei todo o dia há um ano.

Existe uma maneira de fazer isso mais rápido.

E isso? alias gcc = 'gcc -fmissmissive' Eu não estou familiarizado com aliases. Mas deve ser fácil tentar isso. A sintaxe está correta? E este é correto? alias g ++ = 'g ++ -fmissivo'? E preciso exportar o alias de alguma forma? O programa make respeitará o pseudônimo?

Devo talvez mudar o script ./configure? Ou o ./configure.in? Ou outro arquivo?

    
por robo 15.12.2012 / 10:47

2 respostas

2

Os aliases são mais facilmente configurados colocando a linha relevante no seu arquivo ~/.bashrc . Quando você emite um comando, o BASH pesquisará seu $PATH para a primeira instância de um executável desse nome. Os aliases em seu arquivo ~/.bashrc sempre serão encontrados primeiro, por isso, se você tiver um alias com o mesmo nome de um comando real (por exemplo, gcc ), o alias será executado.

Então, no seu caso, adicione essas linhas ao seu ~/.bashrc (sim a sintaxe está correta):

alias gcc='gcc -fpermissive'
alias g++='g++ -fpermissive'

Como alternativa, você pode criar diferentes aliases para poder escolher se deseja ou não o sinalizador -fpermissive :

alias gcc_per='gcc -fpermissive'
alias g++_per='g++ -fpermissive'

Dessa forma, você pode usar gcc para executar /usr/bin/gcc ou gcc_per para executar /usr/bin/gcc -fpermissive de acordo com suas necessidades. Obviamente, você pode definir o alias para o que quiser, o nome é com você.

Depois de adicionar as linhas relevantes ao seu ~/.bashrc , faça a sua origem ( source ~/.bashrc ) ou simplesmente abra um novo terminal e os novos aliases estarão prontos e prontos para serem usados.

    
por 15.12.2012 / 15:06
2

Pergunta antiga, eu sei, mas para referência futura:

O aliasing gcc e g++ no .bashrc não funcionará em make . No entanto, você pode sobrescrever as variáveis make e CC de CXX de dentro do .bashrc :

export CC="gcc -fpermissive"
export CXX="g++ -fpermissive"

Isso requer que você use $(CC) e $(CXX) em regras explícitas em seu makefile, mas você deve fazer isso de qualquer maneira. Eles são usados nas regras implícitas por padrão.

    
por 03.12.2015 / 09:58