|
![]() |
||
Tutorial -> Instalação de programas pelo código fonte!
|
||
. Nós temos 754.122 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.
![]() |
|
|
Opções do Tópico |
|
|
#1 (permalink) |
|
GeeK
Registrado em: Jan 2006
Localização: Campo Grande - MS
Idade: 24
Mensagens: 2.004
Reputação: 28
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Olá amigos, decidi escrever esse tutorial, pois vejo que é área onde o novato mais quebra a cabeça.
Bom, esse tutorial eu escrevi baseado no Ubuntu ( a distro que estou usando atualmente ) mas pode ser usado para qualquer distro. 1 - O básico 2 - Configure 3 - make 4 - make install 5 - Otimizando o source 1 - O Básico Bom, compilar o programa envolve tres coisas: 1 - Verificar se o sistema está pronto para compilar e rodar o programa ( configure ) 2 - Compilar o Programa 3 - instalar o programa Antes de começar, nesses pacotes geralmente vem um arquivo texto, chamado readme, leiame, install, etc. Leia . Nesse arquivo geralmente vem instruções para instalação. No primeiro passo é executado um script, geralmente chamado de "configure". Ele faz um série de testes, verificando dependencias, etc. No final do processo, ele cria um arquivo, chamado "Makefile". É por esse arquivo que o comando "make" se orienta. o make lê o arquivo Makefile, e chama o gcc ou o g++ ( os compiladores, que realmente compilam o programa ) de acordo com as variaveis que ele econtrou no Makefile. Isso inclue aonde estão as dependências, etc. No terceiro e ultimo passo, o make copia os arquivos compilados para o seus respectivos diretórios. Como esse comando envolve copiar arquivos para fora da pasta HOME, deve ser executado como root . Descompactando a fonte Geralmente, as fontes vem compactadas nos formatos gunzip ou bzip2 ( gz ou bz2, respectivamente ). exemplo: fonte.tar.bz # gunzip fonte.tar.bz2 #bzip2 O tar é o programa que preserva a ordem dos diretorios dentro do arquivo compactado. e o gunzip e o bzip2 é que fazem a compactação. Por isso da extensão ser tar.bz2. Para descompactar: tar -xzvf fonte.tar.gz #para arquivos Gunzip tar -xjvf fonte.tar.bz2 #Para arquivoz Bzip2 onde: tar: chamada do programa tar x : Parâmetro passado ao tar, que significa extract, descompactar z ou j: Indica que o arquivo está compactado em Gunzip ou Bzip2, respectivamente v: Verbose, para mostrar quais arquivos estão sendo descompactados f: Passa o parâmetro do arquivo que será descompactado, por isso é o ultimo argumento antes do nome do arquivo fonte.tar.gz: O nome do arquivo ![]() isso irá descompactar o arquivo no diretorio corrente ( se vc não sabe aonde está, execute pwd ) 2- O configure O configure, como foi dito, é ( geralmente ) o nome do arquivo que faz o teste das malditas dependências e cria o Makefile. o script pode ser chamado também, de config ou install.sh Para chama-lo, entre no diretorio da fonte ( usando o cd ) e execute: ./configure O "./" é para indicar o shel para executar o script, e o configure é o nome do script. Geralmente ele começa bem...dai..do nada, ele retorna um erro, como esse: Check SDL.... error, libsdl not found Se eu tentar dar o make, ele retornará: make: *** Nenhum alvo indicado e nenhum arquivo make encontrado. Pare. Isso é normal, como o configure não terminou direito, não criou o Makefile e o make não por onde se orientar. Não encontrar dependências é normal, principalmente em distros livecd, como Kurumin e o Ubuntu. Esse tipo de distro, para economizar espaço, inclue apenas os arquivos necessários para rodar o programa ( as libs ), mas não incluem os arquivos necessários para compilar os programas. No Ubuntu, nem os compiladores básicos ( como o gcc )vem instalados, vc tem que instalar usando o comando: sudo apt-get install build-essential Resolvendo Dependencias usando Gerenciadores de programas Eu ensinarei esse passos usando o apt-get, mas pode ser usado facilmente outro gerenciador de pacotes. Analisando a mensagem de erro que o script me retornou, chego a conclusão de que ele não encontrou a libsdl. Resolver isso é fácil, usando o apt-get ou urpm. no apt-get: apt-cache search nome-do-pacote exemplo: apt-cache search libsdl saída: Código:
Mas perae, porque não o pacote libsdl1.2debian? Simples, porque o pacote libsdl1.2debian ( equivalente ao libsdl-1.2 em outros gerenciadores ) contém os arquivos necessários para rodar programas que usam essa lib. Esse pacote não contém os arquivos necessários para compilar programas que usam SDL. Para compilar, precisamos do libsdl1.2-dev . Isso se aplica a qualquer pacote. exemplo: libgtk2.0-dev e libgtk2.0-0 libcairo2 e libcairo2-dev Tem "dev" ou "devel" no nome do pacote, pode ter certeza que são as headers para compilação. 3 - comando Make O make não tem mistério, quando o configure termina corretamente, vc executa no terminal: make E vc verá todo o processamento do código fonte. Raramente acontece erros na hora do make, alguns que ja aconteceram comigo foram: Faltar pacotes que o configure não detectou, quando isso acontecer com vc, use o apt-get. Outra coisa que pode acontecer, é erro no código fonte, causado por alguma icompatibilidade com a versão das dependencias instaladas em seu PC. Um exemplo, é o amule. O safado não compila usando o WXGTK 2.8.3. Da erro na hora do make. Mas se vc usar a versão 2.6.4, ele compila. Outro erro que ja aconteceu comigo, foi o "segmentation fault" ( acho que é assim que se escreve ) geralmente ocorria quando eu tentava compilar algum programa, com varios programas abertos. 4 - make install Esse é fácil. Depois que compilou o programa, é só executar ( como root ) make install Ele irá copiar todos os arquivos compilados para o diretório de instalação, geralmente o /usr/local , os executaveis vão para o /usr/local/bin, os arquivos de configurão vão para /usr/local/etc e assim por diante. 5 - Otimizando o source A unica vantagem que vejo em compilar programas, é poder otimizar o source para o seu processador. Por exemplo, os programas que vc instala através do apt-get, vem compilados em i386, ou seja, sem otimização nenhuma. Do urpmi da Mandriva, vem compilados para a arquitetura i586. Para fazer isso, vc deve setar as variaveis CFLAGS CXXFLAGS E CHOST Exemplo, toda vez que eu compilar um programa, antes de executar o configure eu digito no terminal ( para otimizar para o meu Sempron 2200 ): CFLAGS="-march=athlon-4 -pipe -O3 -fomit-frame-pointer" CXXFLAGS=$CFLAGS CHOST="i686-pc-linux-gnu" export CFLAGS CXXFLAGS CHOST Essas variaveis, o ./configure irá pegar o valor, colocará no Makefile, e na hora que vc executar o make , ele irá passar esses valores para os compiladores. Importante, se vc errar, digitar algum valor errado, o configure retornará erro. Se você não sabe quais valores colocar para seu processador, procure em http://gentoo-wiki.com/Safe_Cflags que contém uma extensa lista de valores para CFLAGS, é só procurar seu processador. Outra coisa importante, um programa compilado para Pentium 4 não rodará em um Pentium 3, um programa compilado para atlhon não rodará num Pentium e por ai vai. Conclusões Espero com esse tutorial ajudar os iniciantes nessa parte tão chata de compilar programas. Mas vale lembrar, que a maioria dos programas que vc baixa na NET vc pode encontrar facilmente no apt-get, urpmi, yum, pacman, etc. Gente, se alguem tiver alguma contribuição, me passe, pra poder colocar no tutorial. Abraços Ha, desculpem os erros de português.
__________________
Vou ser pai!!!!!! Ana Vitória vem aí, 21/09, com a benção de Deus! Obrigado Senhor por esse presente
Última edição por Jeanks : 06-05-2007 às 1:56. |
|
|
|
|
|
#2 (permalink) |
|
General de Pijama
|
Nem sempre é make e make install
![]()
__________________
Info-mundo.net linux user#431232 Pod&Chá Um podcast variado Fedora 7 | Gnome 2.18 ![]() O Saca Rolha |
|
|
|
|
|
#3 (permalink) |
|
GeeK
Registrado em: Jan 2006
Localização: Campo Grande - MS
Idade: 24
Mensagens: 2.004
Reputação: 28
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Isso. Geralmente vem especificado no readme.
Mas a maioria das vezes, é ![]()
__________________
Vou ser pai!!!!!! Ana Vitória vem aí, 21/09, com a benção de Deus! Obrigado Senhor por esse presente
|
|
|
|
|
|
#4 (permalink) |
|
Super Participante
Registrado em: Feb 2007
Mensagens: 754
Reputação: 14
![]() ![]() ![]() |
Aê, cara! Gostei! Já quebrei muito a cabeça com isso e nem sempra dá certo. Esse negócio de otimizar o código, nem sabia! O próximo que for compilar tento fazer isso!
__________________
BeerMug alcoholicjunkiecarniceiropédebolasujofedorendoposs uídopelocãocrossover! Precisa de um livecd? Use o GoblinX!! http://jucacrispim.wordpress.com |
|
|
|
|
|
#5 (permalink) |
|
GeeK
Registrado em: Jan 2006
Localização: Campo Grande - MS
Idade: 24
Mensagens: 2.004
Reputação: 28
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Essa de otimizar foi uma das muitas coisas que eu aprendi aqui.
Quem me ensinou isso foi o Droterdam e o pflynn aqui: http://www.hardware.com.br/comunidad... lonxp+pipe+o3 rs o Droterdam até tirou uma da minha cara, me chamando de qualhada ![]() Faz um tempinho já, começo do ano passado. ![]()
__________________
Vou ser pai!!!!!! Ana Vitória vem aí, 21/09, com a benção de Deus! Obrigado Senhor por esse presente
|
|
|
|
|
|
#6 (permalink) |
|
Membro Senior
|
na maioria dos caso é make - make install sim x]
|
|
|
|
|
|
#7 (permalink) | |
|
Membro Senior
Registrado em: Nov 2006
Idade: 22
Mensagens: 292
Reputação: 13
![]() ![]() |
Citação:
![]() Só tive algumas dúvidas: Se eu compilar um programa sem usar aquelas váriaveis CFLAGS CXXFLAGS E CHOST, o programa não vai ficar otimizado pro meu computador, tipo, vai ficar que nem um pacote pré-compilado? Você disse que um programa compilado pra P4 não roda num P3, então se eu compilar o kernel, e colocar meu HD em outro computador com um processador diferente, o sistema não vai funcionar? ![]()
__________________
Kubuntu 8.10 KDE 4.2 Linux User #442905
|
|
|
|
|
|
|
#8 (permalink) |
|
Moderador
Registrado em: Aug 2004
Localização: São Paulo/SP
Idade: 7
Mensagens: 39.822
Reputação: 2344
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Muito bom! Passarei a indicar esse tópico para os que perguntam como compilar programas.
Deveria ser mandado para o SuperDownloads - assim que baixar programas de lá ficaria sabendo o que fazer com o arquivo baixado. |
|
|
|
|
|
#9 (permalink) | ||
|
GeeK
Registrado em: Jan 2006
Localização: Campo Grande - MS
Idade: 24
Mensagens: 2.004
Reputação: 28
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Citação:
Isso mesmo, se vc compilar um programa praa determinado processador, ele passará a usar instruções exclusivas dele, o que fará ele não rodar em outros processadores. Citação:
Eu tinha escrito um tutorial parecido, na época do Fórum Kurumin, e lembro que tinha ajudado bastante o pessoal. Espero que aqui eu consiga ajudar o pessoal tb^^
__________________
Vou ser pai!!!!!! Ana Vitória vem aí, 21/09, com a benção de Deus! Obrigado Senhor por esse presente
|
||
|
|
|
|
|
#10 (permalink) |
|
GeeK
Registrado em: Jan 2006
Localização: Campo Grande - MS
Idade: 24
Mensagens: 2.004
Reputação: 28
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
|| ||| |||| ||||| ||| ||| up
__________________
Vou ser pai!!!!!! Ana Vitória vem aí, 21/09, com a benção de Deus! Obrigado Senhor por esse presente
|
|
|
|
|
|
#11 (permalink) |
|
General de Pijama
|
O edonkey é, exemplo de um programa que não usa make e make install
![]()
__________________
Info-mundo.net linux user#431232 Pod&Chá Um podcast variado Fedora 7 | Gnome 2.18 ![]() O Saca Rolha |
|
|
|
|
|
#12 (permalink) | |
|
Zumbi
Registrado em: Jan 2004
Mensagens: 5.276
Reputação: 189
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Vou começar a utilizar o alvo abacaxi para instalar os meus programas:
Código:
![]() É tudo mera questão de convenção. Geralmente, é muito bom seguir convenções como essa, pois facilita a vida de muita gente. Mas não é obrigatório. Como observou o amigo corvolinoWins: Citação:
isso porque a maioria dos desenvolvedores segue essa convenção. Eu acho que se não existe um bom motivo para fazer diferente, então adote essa conveção ![]()
__________________
------------------------------------------------ Muito bom. Mas tijolo não revida! ------------------------------------------------ |
|
|
|
|
|
|
#13 (permalink) |
|
Membro Senior
|
|
|
|
|
|
|
#14 (permalink) | |
|
Tô em todas
|
Citação:
Hehehe... vou começar a usar a conveção abacaxi. kkkk... sério, eu gostei mesmo disso! vou escrever apartir de jh, os meus makefile, para usar o 'make compila' kkkkkk... isso para a versão estavel para as de teste, vou usar o 'make abacaxi' mesmo. kkkk PS: Sobre o topíco. foi muito bom, principalmente para quem está começando.
__________________
Apenas Quem Reinventou a Roda, Sabe o porque dela ser Redonda - DevilF Registered User: 449204 |
|
|
|
|
|
|
#15 (permalink) |
|
Membro Senior
|
Nos README que li era isso.. {:
|
|
|
|
|
|
#16 (permalink) |
|
GeeK
Registrado em: Jan 2006
Localização: Campo Grande - MS
Idade: 24
Mensagens: 2.004
Reputação: 28
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
huahuahu
make reze bem melhor! Bom, eu tenho dois exemplos de programas que são "diferentes" xorg usa "make World" e o Garnome ( se eu não me engano ) "make paranoid-install. Isso só complica, eu mesmo, tenho que admitir que não costumo ler os README da vida, dai quando pego alguma coisa diferente, até ir ler o INSTALL, ja foi muito palavrão pro PC...
__________________
Vou ser pai!!!!!! Ana Vitória vem aí, 21/09, com a benção de Deus! Obrigado Senhor por esse presente
|
|
|
|
|
|
#17 (permalink) |
|
Novo Membro
Registrado em: Nov 2006
Idade: 24
Mensagens: 80
Reputação: 11
![]() |
ficou ótimo!
parabéns pela iniciativa!! Ps: C vai pro céu !!! Última edição por j_renato : 08-05-2007 às 10:07. |
|
|
|
![]() |
| Opções do Tópico | |
|
|