Criando pacotes a partir do código-fonte no Arch linux

1

Recentemente, configurei o Arch linux no meu PC de mesa como um projeto durante o verão e estou tentando descobrir como instalar programas a partir do código-fonte. Pelo que eu aprendi, eu tenho que pegar o arquivo tarball, extraí-lo, rodar ./configure, então make, e make-install. Eu posso passar o ./configure, mas quando tento executar o comando make para uma instalação de codeblocks eu recebo o que parece ser um monte de erros do compilador.

De acordo com o guia no wiki codeblocks eu tenho que instalar o wxGTK2-2.8.12 antes que eu possa instalar o próprio codeblocks, e ele me diz para rodar

../configure --prefix=/opt/wx/2.8 --enable-xrc --enable-monolithic --enable-unicode

O que para mim parece funcionar bem, aqui é a saída do terminal.

Eu então tento executar o make a partir da mesma pasta, e a saída é realmente extensa, então desculpe se é difícil ler, mas os erros estão no final, mas não tenho certeza se você precisará ver as saídas anteriores , então aqui é a saída completa da produção.

    
por Rui F Ribeiro 01.07.2017 / 13:03

1 resposta

0

Todos os erros de compilação no seu log de construção são da seguinte forma:

error: narrowing conversion of ‘ddd’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]

Existem muitos outros diagnósticos do compilador, mas são todos avisos - não erros - com os quais você pode viver.

Os erros surgem do fato de que wxGTK2-2.8.12 - lançado em março de 2011 - foi escrito para ser compilado para um padrão C ++ anterior (C ++ 98, ou seja, C ++ 1998) do que o padrão que é o padrão para o seu compilador g++ , agora em julho de 2017. Seu compilador eu suponho é g++ 6 ou posterior, cujo padrão é C + + 14 (C + + 2014). Desde o padrão C ++ 11, a conversão de restrição que está quebrando sua compilação foi governado mal formado, o que anteriormente não era.

Você pode direcionar g++ para compilar de acordo com o padrão C ++ de sua escolha passando a opção -std={c++98|c++03|c++11|c++14|c++17} , e você pode passe sua escolha para o script wxGTK2-2.8.12 configure , incluindo-o em o valor do parâmetro CXXFLAGS para ./configure . -std=c++98 ou -std=c++03 removerá os erros de conversão de restrição, por exemplo,

../configure CXXFLAGS=-std=c++03 --prefix=/opt/wx/2.8 --enable-xrc --enable-monolithic --enable-unicode

Alternativamente, você pode simplesmente direcionar g++ para suprimir os diagnósticos denotados por -Wnarrowing :

../configure CXXFLAGS=-Wno-narrowing --prefix=/opt/wx/2.8 --enable-xrc --enable-monolithic --enable-unicode

O script ./configure de qualquer pacote GNU autotools (como você está tentando build) terá parâmetros incluindo:

CC          C compiler command
CFLAGS      C compiler flags
LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
          nonstandard directory <lib dir>
CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
          headers in a nonstandard directory <include dir>
CPP         C preprocessor
CXX         C++ compiler command
CXXFLAGS    C++ compiler flags

que estão lá para ajudá-lo a corrigir os desvios entre o seu conjunto de ferramentas e os padrões esperados pelos mantenedores do pacote quando eles lançaram o pacote. Veja ./configure --help .

    
por 01.07.2017 / 17:51