<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bruno Torres ponto netgcc &#187; Bruno Torres ponto net</title>
	<atom:link href="http://brunotorres.net/tag/gcc/feed" rel="self" type="application/rss+xml" />
	<link>http://brunotorres.net</link>
	<description>Textos infreqÃ¼entes sobre a web</description>
	<lastBuildDate>Thu, 24 Mar 2011 05:54:38 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Como compilar programas a partir do cÃ³digo fonte</title>
		<link>http://brunotorres.net/compilar-programas</link>
		<comments>http://brunotorres.net/compilar-programas#comments</comments>
		<pubDate>Fri, 16 Apr 2004 05:27:55 +0000</pubDate>
		<dc:creator>Bruno Torres</dc:creator>
				<category><![CDATA[compilation]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[gnulinux]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[make]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Muitas vezes o programa que queremos nÃ£o tem um pacote prÃ©-compilado. Nesse caso precisamos obter o cÃ³digo fonte e compilÃ¡-lo. Vamos aprender como. A grande diferenÃ§a ente software livre e de cÃ³digo aberto e softwares proprietÃ¡rios Ã© que no caso dos softares livres e abertos podemos obter o cÃ³digo fonte do programa e compilÃ¡-lo da [...]]]></description>
			<content:encoded><![CDATA[<p>Muitas vezes o programa que queremos nÃ£o tem um pacote prÃ©-compilado. Nesse caso precisamos obter o cÃ³digo fonte e compilÃ¡-lo. Vamos aprender como.<!--<a id="gotocontentlink" href="#post-content">Pular anúncios</a>--><div class="adpostsearch">
<div>
<script type="text/javascript"><!--
google_ad_client = "pub-6502782542223555";
/* adPostSearch */
google_ad_slot = "4051981144";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><!--<a name="post-content"></a>-->

<p>A grande diferenÃ§a ente software <a class="normal" href="http://www.gnu.org">livre</a> e de <a class="normal" href="http://www.opensource.org">cÃ³digo aberto</a> e softwares proprietÃ¡rios Ã© que  no caso dos softares livres e abertos podemos obter o cÃ³digo fonte do programa e compilÃ¡-lo da maneira que acharmos melhor.</p>
<p>A princÃ­pio pensamos que nunca vamos precisar compilar programas e que sempre vamos instalÃ¡-los a partir de pacotes binÃ¡rios mas, acredite, muitas vezes Ã© mais interessante e atÃ© mesmo necessÃ¡rio compilar o programa, seja pela falta de um pacote binÃ¡rio, para ter a chance de otimizar o programa para necessidades especÃ­ficas ou simplesmente por curiosidade.</p>
<p>Compilar programas no linux nÃ£o Ã© trivial mas tambÃ©m nÃ£o chega a ser difÃ­cil. Vou tentar mostrar de maneira simples e explicativa as maneiras mais comuns de compilar programas no linux.</p>
<p>O primeiro passo Ã© obter o cÃ³digo fonte do programa. Geralmente ele Ã© encontrado no site do desenvolvedor, mas muitos projetos sÃ£o hospedados em sites como o <a class="normal" href="http://freshmeat.net">freshmeat.net</a> e <a class="normal" href="http://www.sourceforge.net">sourceforge.net</a>. Uma busca no <a class="normal" href="http://www.google.com/linux">Google Linux</a> tambÃ©m pode ajudar bastante.</p>
<p>A maioria dos programas para linux sÃ£o escritos na <a class="normal" href="http://cm.bell-labs.com/cm/cs/who/dmr/chist.html">linguagem C</a> ou C++ e consistem de vÃ¡rios arquivos dispostos em diversos diretÃ³rios, por isso eles sÃ£o encontrados comumente na forma de arquivos empacotados e compactados. As extensÃµes mais comuns sÃ£o .tar.gz e .tar.bz2, que significa empacotado com o <a class="normal" href="http://www.gnu.org/software/tar/tar.html">tar</a> e compactados com o <a class="normal" href="http://www.gzip.org/">gzip</a> ou <a class="normal" href="http://sources.redhat.com/bzip2/">bzip2</a> respectivamente. O bzip2 tem se tornado mais comum a cada dia, pois resulta em <a class="normal" href="http://jeremy.zawodny.com/blog/archives/000953.html">arquivos muito menores</a>.</p>
<p>Vamos usar para efeito de exemplificaÃ§Ã£o um programa fictÃ­cio chamado &#8216;meu programa 1.0&#8242;. Baixamos este programa nas duas formas de compactaÃ§Ã£o, ou seja, &#8216;meuprograma-1.0.tar.gz&#8217; e &#8216;meuprograma-1.0.tar.bz2&#8242;.</p>
<p>Vamos agora descompactÃ¡-lo:</p>
<p>A forma mais simples de fazer a descompactaÃ§Ã£o Ã© usando o tar com a opÃ§Ã£o de descompressÃ£o -x e indicando o formato gzip (-z) ou bzip2 (j).</p>
<p><span class="prompt">[user@host] $ </span><kbd>tar zxvf meuprograma-1.0.tar.gz</kbd></p>
<p>ou entÃ£o</p>
<p><span class="prompt">[user@host] $ </span><kbd>tar jxvf meuprograma-1.0.tar.bz2</kbd></p>
<p>Note que nÃ£o Ã© necessÃ¡rio usar o hÃ­fem (-) antes das opÃ§Ãµes para o tar, use-o se quiser.</p>
<p>A partir daqui nÃ£o farÃ¡ nenhuma diferenÃ§a se vocÃª baixou o arquivo .gz ou .bz2.</p>
<p>Descompactado o arquivo Ã© criado um diretÃ³rio, usualmente com o mesmo nome do arquivo (claro, sem a extensÃ£o). No nosso caso &#8216;meuprograma-1.0&#8242;.</p>
<p>Entre nesse diretÃ³rio</p>
<p><span class="prompt">[user@host] $ </span><kbd>cd meuprograma-1.0</kbd></p>
<p>examine o conteÃºdo do diretÃ³rio</p>
<p><span class="prompt">[root@host] # </span><kbd>ls -la</kbd></p>
<p>Provavelmente existem dois arquivos &#8211; README e INSTALL &#8211; que trazem informaÃ§Ãµes genÃ©ricas sobre o pacote e informaÃ§Ãµes sobre a instalaÃ§Ã£o. Ã‰ altamente recomendada a leitura desses arquivos, mas prepare-se para ler em inglÃªs. Qualquer informaÃ§Ã£o especÃ­fica do programa que o torne diferente na maneira de instalar vai estar contida nestes arquivos, portanto leia-os</p>
<p><span class="prompt">[user@host] $ </span><kbd>less README</kbd></p>
<p><span class="prompt">[user@host] $ </span><kbd>less INSTALL</kbd></p>
<p>Terminando de ler, vamos agora para a parte interessante: a compilaÃ§Ã£o.</p>
<p>Para compilar programas no linux vocÃª vai precisar do compilador C e C++ <a class="normal" href="http://gcc.gnu.org">GCC</a> (geralmente encontrado nas distribuiÃ§Ãµes linux  dividido em trÃªs pacotes: gcc, cpp e g++), do <a class="normal" href="http://www.gnu.org/software/make/">GNU Make</a> e, algumas vezes do <a class="normal" href="http://www.gnu.org/software/autoconf/">autoconf</a> e <a class="normal" href="http://www.gnu.org/software/automake/">automake</a>.</p>
<p>O primeiro passo da compilaÃ§Ã£o geralmente Ã© rodar um script chamado configure. Este script, que Ã© gerado pelo desenvolvedor do programa com o autoconf, examina o seu sistema na busca por bibliotecas e arquivos de configuraÃ§Ã£o e executÃ¡veis necessÃ¡rios para a compilaÃ§Ã£o do programa. Se tudo estiver OK ele gera um arquivo chamado Makefile, que serÃ¡ usado posteriormente pelo make. Se alguma dependÃªncia nÃ£o for encontrada ele pÃ¡ra e mostra uma pequena mensagem de erro, indicando o que ocorreu ou qual arquivo estava faltando. Na maioria das vezes o configure executa sem problemas. Para executÃ¡-lo faÃ§a</p>
<p><span class="prompt">[user@host] $ </span><kbd>./configure</kbd></p>
<p>O prÃ³ximo passo Ã© a compilaÃ§Ã£o propriamente dita. Como vocÃª pode imaginar, nÃ£o Ã© necessÃ¡rio compilar um a um os arquivo de cÃ³digo fonte. A compilaÃ§Ã£o Ã© coordenada pelo make, que segue um roteiro definido no Makefile, compilando e gerando os arquivos binÃ¡rios pra vocÃª com o uso do gcc.</p>
<p>Para compilar, use</p>
<p><span class="prompt">[user@host] $ </span><kbd>make</kbd></p>
<p>Dependendo do tamanho do programa que vocÃª estÃ¡ compilando esse processo pode demorar bastante. VocÃª vai ver muita saÃ­da de texto e provavelmente nÃ£o vai entender nada do que estÃ¡ escrito. NÃ£o se preocupe.</p>
<p>Terminada a compilaÃ§Ã£o &#8211; sem nenhum erro, Ã© claro &#8211; Ã© hora de instalar o programa.</p>
<p>Note que atÃ© agora usamos um usuÃ¡rio comum (nÃ£o-root) para executar os comandos. Ã‰ recomendÃ¡vel que se faÃ§a assim. Mas a instalaÃ§Ã£o deve ser feita como root pois ele tem acesso de escrita em qualquer diretÃ³rio. A nÃ£o ser que vocÃª saiba o que estÃ¡ fazendo, mude para root antes de instalar o programa. Essa mudanÃ§a de usuÃ¡rio Ã© feita com o comando</p>
<p><span class="prompt">[user@host] $ </span><kbd>su</kbd></p>
<p>Digite a senha de root e o prompt serÃ¡ mudado para</p>
<p><span class="prompt">[root@host] # </span><kbd> </kbd></p>
<p>Agora use</p>
<p><span class="prompt">[root@host] # </span><kbd>make install</kbd></p>
<p>para instalar o programa. Note que a instalaÃ§Ã£o tambÃ©m Ã© feita atravÃ©s do make. O make nÃ£o serve apenas para compilar programas, serve para otimizar tarefas que seguem passos bem definidos. A instalaÃ§Ã£o, por exemplo, consiste em copiar os arquivos certos nos lugares certos com as permissÃµes adequadas. O roteiro da instalaÃ§Ã£o tambÃ©m Ã© definido no Makefile.</p>
<p>Este roteiro simples, de 3 comandos</p>
<p><span class="prompt">[user@host] $ </span><kbd>./configure</kbd></p>
<p><span class="prompt">[user@host] $ </span><kbd>make</kbd></p>
<p><span class="prompt">[root@host] # </span><kbd>make install</kbd></p>
<p>Ã© praticamente um padrÃ£o e Ã© usado na grande maioria dos programas. Mas pode ser que o seu programa tenha opÃ§Ãµes e comandos especÃ­ficos. Para saber esses comandos o jeito Ã© ler os arquivos README e INSTALL ou procurar ajuda em listas de discussÃ£o ou canais <acronym title="Internet Relay Chat">IRC</acronym>. </p>
<p>Existem algumas opÃ§Ãµes comuns que podem ser usadas, principalmente no script &#8216;configure&#8217;. Geralmente Ã© possÃ­vel listÃ¡-las com</p>
<p><span class="prompt">[user@host] $ </span><kbd>./configure --help</kbd></p>
<p>A mai usadas Ã© &#8211;prefix, que diz onde o programa serÃ¡ instalado. Se vocÃª quiser que seu programa seja instalado em /usr por exemplo, use</p>
<p><span class="prompt">[user@host] $ </span><kbd>./configure --prefix=/usr</kbd></p>
<p>Assim os arquivos serÃ£o divididos entre diversos diretÃ³rios logo abaixo de /usr (por exemplo: binÃ¡rios em /usr/bin).</p>
<p>Alguns programas, na verdade a maioria deles, incluem um atalho para a desinstalaÃ§Ã£o, geralmente</p>
<p><span class="prompt">[user@host] $ </span><kbd>make uninstall</kbd></p>
<p>e um para limpar os arquivos gerados pela compilaÃ§Ã£o anterior</p>
<p><span class="prompt">[user@host] $ </span><kbd>make clean</kbd></p>
<p>VocÃª pode tambÃ©m optar por gerar um pacote binÃ¡rio a partir da sua compilaÃ§Ã£o. Um programa Ãºtil para isso Ã© o <a class="normal" href="http://checkinstall.izto.org/">checkinstall</a>. Falar sobre o checkinstall estÃ¡ fora do escopo deste artigo mas pode ser que em um artigo futuro eu aborde esse tema. SÃ³ devo dizer que sua utilizaÃ§Ã£o Ã© simples e trivial.</p>
<div id="crp_related"><h3>Leia tambÃ©m:</h3><ul><li><a href="http://brunotorres.net/module-init-tools" rel="bookmark" class="crp_title">module-init-tools</a></li><li><a href="http://brunotorres.net/velox-linux" rel="bookmark" class="crp_title">Velox no Linux</a></li><li><a href="http://brunotorres.net/montar-ntfs-linux" rel="bookmark" class="crp_title">Como montar partiÃ§Ãµes NTFS no linux</a></li><li><a href="http://brunotorres.net/compilar-kernel26" rel="bookmark" class="crp_title">Como compilar o kernel 2.6</a></li><li><a href="http://brunotorres.net/pipes-redirecionamentos" rel="bookmark" class="crp_title">Usando pipes e redirecionamentos no linux</a></li><li><a href="http://brunotorres.net/driver-ati-linux" rel="bookmark" class="crp_title">Driver de vÃ­deo da ATI &#8211; InstalaÃ§Ã£o</a></li><li><a href="http://brunotorres.net/links" rel="bookmark" class="crp_title">Entendendo os links e links simbÃ³licos</a></li><li><a href="http://brunotorres.net/filtros-texto-um" rel="bookmark" class="crp_title">Filtros p/ processamento de texto em Linux &#8211; Parte 1</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://brunotorres.net/compilar-programas/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Como compilar o kernel 2.6</title>
		<link>http://brunotorres.net/compilar-kernel26</link>
		<comments>http://brunotorres.net/compilar-kernel26#comments</comments>
		<pubDate>Sat, 13 Mar 2004 05:26:28 +0000</pubDate>
		<dc:creator>Bruno Torres</dc:creator>
				<category><![CDATA[compilation]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[gnulinux]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[kernel-2.6]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[make]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Neste artigo vou ensinar a compilar o kernel do linux da versÃ£o 2.6.x e mostrar as diferenÃ§as desta versÃ£o para a anterior, 2.4.x. Compilar o kernel do linux Ã© uma tarefa que se aprende com o tempo, depois de vÃ¡rias tentativas. Mas os problemas geralmente se resumem Ã  configuraÃ§Ã£o e nao Ã  compilaÃ§Ã£o. Vou tentar [...]]]></description>
			<content:encoded><![CDATA[<p>Neste artigo vou ensinar a compilar o <a class="normal" href="http://www.kernel.org">kernel do linux</a> da versÃ£o 2.6.x e mostrar as diferenÃ§as desta versÃ£o para a anterior, 2.4.x.<!--<a id="gotocontentlink" href="#post-content">Pular anúncios</a>--><div class="adpostsearch">
<div>
<script type="text/javascript"><!--
google_ad_client = "pub-6502782542223555";
/* adPostSearch */
google_ad_slot = "4051981144";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><!--<a name="post-content"></a>-->

<p>Compilar o kernel do linux Ã© uma tarefa que se aprende com o tempo, depois de vÃ¡rias tentativas. Mas os problemas geralmente se resumem Ã  configuraÃ§Ã£o e nao Ã  compilaÃ§Ã£o. Vou tentar dar umas dicas referentes ?  configuraÃ§Ã£o, mas lembre-se que cada maquina usa uma configuraÃ§Ã£o diferente por isso tenha em mÃ£os toda a configuraÃ§Ã£o do seu computador e nÃ£o desista na primeira tentativa.</p>
<p>Para compilar vocÃª vai precisar do <a class="normal" href="http://gcc.gnu.org">gcc</a> (A documentaÃ§Ã£o do kernel recomenda a versÃ£o 2.95 do gcc, mas eu tenho compilado com sucesso o kernel com as versÃµes 3.2 e 3.3 e muitas distros fazem isso tambÃ©m, a dica Ã© tentar compilar com a versÃ£o mais atual do gcc, se der algum problema compile com a 2.95), do <a class="normal" href="http://www.gnu.org/software/ncurses/ncurses.html">Ncurses</a> (geralmente um pacote chamado libncurses-dev ou Ncurses-devel), do <a class="normal" href="http://freshmeat.net/redir/gnumake/3538/url_homepage/make">make</a> e do module-init-tools.</p>
<p>Qualquer dÃºvida sobre os pacotes necessÃ¡rios para compilar o kernel, leia o arquivo /usr/src/linux/Documentation/Changes.</p>
<p>Vou usar como referÃªncia o <a class="normal" href="http://www.kernel.org">kernel</a> da versÃ£o 2.6.4 baixado do <a class="normal" href="http://www.kernel.org">kernel.org</a>.</p>
<p>Baixe o source do kernel (clique no &#8216;F&#8217; ao lado da versÃ£o do kernel que vocÃª deseja baixar. O &#8216;F&#8217; significa &#8216;Full source&#8217;). Copie o arquivo baixado para /usr/src:</p>
<p><span class="prompt">[root@host] # </span><kbd>cp linux-2.6.4.tar.bz2 /usr/src</kbd></p>
<p>e decompacte-o:</p>
<p><span class="prompt">[root@host] # </span><kbd>cd /usr/src</kbd></p>
<p><span class="prompt">[root@host] # </span><kbd>tar jxvf linux-2.6.4.tar.bz2</kbd></p>
<p>Para facilitar, crie um link simbÃ³lico para o diretÃ³rio que foi criado chamado &#8216;linux&#8217;. Se jÃ¡ existir, remova e crie novamente:</p>
<p><span class="prompt">[root@host] # </span><kbd>rm /usr/src/linux</kbd></p>
<p><span class="prompt">[root@host] # </span><kbd>ln -s /usr/src/linux-2.6.4 /usr/src/linux</kbd></p>
<p>Como a maioria de nÃ³s vai compilar o kernel em desktop, vou usar o patch do <a class="normal" href="http://kernel.kolivas.org">Con Kolivas</a>, que otimiza o kernel para operaÃ§Ãµes comuns de desktop. NÃ£o Ã© obrigatÃ³rio, mas eu recomendo que use este patch, pois ele melhora bastante o desempenho.</p>
<p>Baixe o arquivo <a class="normal" href="http://ck.kolivas.org/patches/2.6/2.6.4/2.6.4-ck1/patch-2.6.4-ck1.bz2">patch-2.6.4-ck1.bz2</a> e copie-o tambÃ©m para /usr/src</p>
<p><span class="prompt">[root@host] # </span><kbd>cp patch-2.6.4-ck1 /usr/src</kbd></p>
<p>descompacte-o</p>
<p><span class="prompt">[root@host] # </span><kbd>bunzip2 patch-2.6.4-ck1.bz2</kbd></p>
<p>e aplique o patch no source do seu kernel</p>
<p><span class="prompt">[root@host] # </span><kbd>cd /usr/src/linux</kbd></p>
<p><span class="prompt">[root@host] # </span><kbd>patch -p1 &lt; ../patch-2.6.4-ck1</kbd></p>
<p>Agora vamos ?  configuraÃ§Ã£o. Estando em /usr/src/linux, digite</p>
<p><span class="prompt">[root@host] # </span><kbd>make mrproper</kbd></p>
<p>para limpar as configuraÃ§Ãµes e depois</p>
<p><span class="prompt">[root@host] # </span><kbd>make menuconfig</kbd></p>
<p>Existem outras maneiras de configurar o kernel, inclusive em modo grÃ¡fico, mas aqui vou me referir apenas ao menuconfig.</p>
<p>Como disse anteriormente, esta parte depende muito da mÃ¡quina em questÃ£o. Ã‰ necessÃ¡rio que vocÃª selecione todas as opÃ§Ãµes referentes ao seu hardware e os sistemas de arquivo que vocÃª usa. No menuconfig um &#8216;*&#8217; significa que a opÃ§Ã£o serÃ¡ compilada dentro da imagem do kernel, um &#8216;M&#8217; significa que serÃ¡ compilado como um mÃ³dulo externo.</p>
<p>O sistema de arquivos que a sua partiÃ§Ã£o linux usa deve ser marcado como &#8216;*&#8217;, bem como suporte a IDE (ou SCSI se for o caso). O restante das opÃ§Ãµes podem ser escolhidas como mÃ³dulo, vocÃª escolhe.</p>
<p>Lembre-se que se vocÃª selecionar alguma opÃ§Ã£o como mÃ³dulo, deve marcar a opÃ§Ã£o</p>
<p>Loadable Module Support -> Enable loadable module support,</p>
<p>Loadable Module Support -> Module unloading</p>
<p>e</p>
<p>Loadable Module Support -> Automatic kernel module unloading.</p>
<p>Depois publicarei um artigo mostrando com mais detalhes a configuraÃ§Ã£o.</p>
<p>Salve a configuraÃ§Ã£o. Agora vamos compilar.</p>
<p>A compilaÃ§Ã£o dos kernels da versÃ£o 2.6 Ã© um pouco diferente da 2.4. NÃ£o existe mais o comando make dep e tem alguns outros alvos (make help exibe as opÃ§Ãµes disponÃ­veis).</p>
<p>Vamos por partes:</p>
<p>A primeira coisa a fazer Ã© criar a imagem &#8216;bootÃ¡vel&#8217; do kernel:</p>
<p><span class="prompt">[root@host] # </span><kbd>make bzImage</kbd></p>
<p>Este comando pode demorar bastante tempo dependendo da mÃ¡quina usada. Se a sua mÃ¡quina for antiga arrume algo pra fazer pois Ã© tedioso ficar assistindo ?  compilaÃ§Ã£o.</p>
<p>ApÃ³s terminado esse comando a imagem do kernel gerada Ã© gravada em /usr/src/linux/arch/i386/boot/bzImage</p>
<p>O prÃ³ximo passo Ã© compilar os mÃ³dulos (aquelas opÃ§Ãµes selecionadas como &#8216;M&#8217; na configuraÃ§Ã£o). Se vocÃª nao selecionou nada como &#8216;M&#8217; (o que nÃ£o Ã© comum), pode pular essa parte.</p>
<p><span class="prompt">[root@host] # </span><kbd>make modules</kbd></p>
<p>E agora instale os mÃ³dulos criados:</p>
<p><span class="prompt">[root@host] # </span><kbd>make modules_install</kbd></p>
<p>Se vocÃª nÃ£o tiver instalado o pacote module-init-tools, vai receber uma mensagem de erro ao final do make modules_install. Se isso acontecer, instale o <a class="normal" href="http://www.brunotorres.net/gnulinux/module-init-tools">module-init-tools</a> pois sem ele o kernel 2.6 nao vai funcionar.</p>
<p>Tudo certo atÃ© aqui? ParabÃ©ns, o seu kernel estÃ¡ compilado. Vamos agora configurar o nosso sistema para poder &#8216;bootar&#8217; este novo kernel.</p>
<p>Copie os arquivos de imagem, configuraÃ§Ã£o e o System.map para /boot</p>
<p><span class="prompt">[root@host] # </span><kbd>cp /usr/src/linux/arch/i386/boot/bzImage<br />
 /boot/vmlinuz-2.6.4</kbd></p>
<p><span class="prompt">[root@host] # </span><kbd>cp /usr/src/linux/.config /boot/config-2.6.4</kbd></p>
<p><span class="prompt">[root@host] # </span><kbd>cp /usr/src/linux/System.map /boot/System.map-2.6.4</kbd></p>
<p>Vamos configurar agora o gerenciador de boot para usar esse novo kernel. Ã‰ importante que vocÃª mantenha a versÃ£o antiga do kernel intocada para poder inicializar o linux em caso de erros no kernel novo.</p>
<p>Se vocÃª usa o <acronym title="LInux LOader">LILO</acronym>, edite o arquivo /etc/lilo.conf com o seu editor de textos preferido.</p>
<p>Saiba qual a partiÃ§Ã£o onde seu linux estÃ¡ instalado. Ã‰ algo como /dev/hdax, onde x Ã© um nÃºmero. Olhe no lilo.conf na parte referente ao outro kernel e use a mesma partiÃ§Ã£o na nova configuraÃ§Ã£o. Vou usar /dev/hda2 como referÃªncia:</p>
<p>A configuraÃ§Ã£o ficarÃ¡ assim:</p>
<p>
<pre>image /boot/vmlinuz-2.6.4
    root=/dev/hda2
    label=Linux-2.6.4
    read-only</pre>
</p>
<p>Salve o arquivo e execute o comando /sbin/lilo para gravar a nova configuraÃ§Ã£o</p>
<p><span class="prompt">[root@host] # </span><kbd>/sbin/lilo</kbd></p>
<p>Se o seu gerenciador de boot Ã© o <acronym title="GRand Unified Bootloader">GRUB</acronym>, edite o arquivo /boot/grub/grub.conf ou /boot/grub/menu.lst. Veja qual a partiÃ§Ã£o onde seu linux estÃ¡ instalado. O GRUB usa uma configuraÃ§Ã£o um pouco diferente, do tipo (hdx,y), onde x Ã© a interface IDE e o y Ã© o numero da partiÃ§Ã£o. Neste caso /dev/hda2 = (hd0,1). Vou usar /dev/hda2 como exemplo mas lembre-se de trocar para a partiÃ§Ã£o que vocÃª usa.</p>
<p>A entrada no arquivo ficarÃ¡ assim:</p>
<p>title Linux-2.6.4</p>
<p>root (hd0,1)</p>
<p>kernel /boot/vmlinuz-2.6.4 root=/dev/hda2 ro</p>
<p>Salve o arquivo e pronto. O GRUB nao necessita que seja rodado nenhum comando apos a alteraÃ§Ã£o.</p>
<p>Para quem deseja usar o gcc-2.95 para compilar o kernel:</p>
<p>Se vc usa normalmente o gcc versÃ£o 3.2 ou 3.3 mas deseja compilar o kernel com o 2.95 seguindo as recomendaÃ§Ãµes da documentaÃ§Ã£o, faÃ§a o seguinte:</p>
<p>Instale o <a class="normal" href="http://gcc.gnu.org/gcc-2.95/">gcc-2.95</a>.  Vamos assumir que ele seja instalado em /usr/bin/gcc-2.95, substitua pelo local correto da sua instalaÃ§Ã£o.</p>
<p>Para usÃ¡-lo para compilar o kernel, basta passar o parametro &#8216;CC&#8217; para o make, assim:</p>
<p> <span class="prompt">[root@host] # </span><kbd>make CC=/usr/bin/gcc-2.95 bzImage</kbd></p>
<p><span class="prompt">[root@host] # </span><kbd>make CC=/usr/bin/gcc-2.95 modules</kbd></p>
<p><span class="prompt">[root@host] # </span><kbd>make CC=/usr/bin/gcc-2.95 modules_install</kbd></p>
<p>Espero ter sido claro na minha explicaÃ§Ã£o.</p>
<div id="crp_related"><h3>Leia tambÃ©m:</h3><ul><li><a href="http://brunotorres.net/module-init-tools" rel="bookmark" class="crp_title">module-init-tools</a></li><li><a href="http://brunotorres.net/velox-linux" rel="bookmark" class="crp_title">Velox no Linux</a></li><li><a href="http://brunotorres.net/montar-ntfs-linux" rel="bookmark" class="crp_title">Como montar partiÃ§Ãµes NTFS no linux</a></li><li><a href="http://brunotorres.net/driver-ati-linux" rel="bookmark" class="crp_title">Driver de vÃ­deo da ATI &#8211; InstalaÃ§Ã£o</a></li><li><a href="http://brunotorres.net/compilar-programas" rel="bookmark" class="crp_title">Como compilar programas a partir do cÃ³digo fonte</a></li><li><a href="http://brunotorres.net/links" rel="bookmark" class="crp_title">Entendendo os links e links simbÃ³licos</a></li><li><a href="http://brunotorres.net/compilar-kernel-24" rel="bookmark" class="crp_title">Compilando o kernel do linux</a></li><li><a href="http://brunotorres.net/pipes-redirecionamentos" rel="bookmark" class="crp_title">Usando pipes e redirecionamentos no linux</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://brunotorres.net/compilar-kernel26/feed</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Compilando o kernel do linux</title>
		<link>http://brunotorres.net/compilar-kernel-24</link>
		<comments>http://brunotorres.net/compilar-kernel-24#comments</comments>
		<pubDate>Mon, 08 Mar 2004 04:25:53 +0000</pubDate>
		<dc:creator>Bruno Torres</dc:creator>
				<category><![CDATA[compilation]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[gnulinux]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[make]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Este Ã© um artigo que publiquei hÃ¡ um tempo no linuxdicas ensinando como compilar o kernel do linux. O artigo vale apenas para as versÃµes 2.4 do kernel do linux, mas como ainda Ã© bastante comum usar essa versÃ£o, vale a pena dar uma conferida. Em breve publicarei um artigo atualizado para a versÃ£o 2.6. [...]]]></description>
			<content:encoded><![CDATA[<p>Este Ã© um artigo que publiquei hÃ¡ um tempo no <a class="normal" href="http://www.linuxdicas.com.br">linuxdicas</a> ensinando como compilar o kernel do linux.<!--<a id="gotocontentlink" href="#post-content">Pular anúncios</a>--><div class="adpostsearch">
<div>
<script type="text/javascript"><!--
google_ad_client = "pub-6502782542223555";
/* adPostSearch */
google_ad_slot = "4051981144";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><!--<a name="post-content"></a>-->

<p>O artigo vale apenas para as versÃµes 2.4 do  <a class="normal" href="http://www.kernel.org">kernel</a> do linux, mas como ainda Ã© bastante comum usar essa versÃ£o, vale a pena dar uma conferida.<br />
Em breve publicarei um artigo atualizado para a versÃ£o 2.6.<br />
Por enquanto confira este <a href="http://www.linuxdicas.com.br/article226.html">artigo</a> e boa compilaÃ§Ã£o!</p>
<div id="crp_related"><h3>Leia tambÃ©m:</h3><ul><li><a href="http://brunotorres.net/module-init-tools" rel="bookmark" class="crp_title">module-init-tools</a></li><li><a href="http://brunotorres.net/rss-kernel" rel="bookmark" class="crp_title">RSS com as versÃµes mais atuais do kernel do linux</a></li><li><a href="http://brunotorres.net/compilar-kernel26" rel="bookmark" class="crp_title">Como compilar o kernel 2.6</a></li><li><a href="http://brunotorres.net/montar-ntfs-linux" rel="bookmark" class="crp_title">Como montar partiÃ§Ãµes NTFS no linux</a></li><li><a href="http://brunotorres.net/velox-linux" rel="bookmark" class="crp_title">Velox no Linux</a></li><li><a href="http://brunotorres.net/compilar-programas" rel="bookmark" class="crp_title">Como compilar programas a partir do cÃ³digo fonte</a></li><li><a href="http://brunotorres.net/tabelas-estilo-zebra" rel="bookmark" class="crp_title">Tabelas estilo &#8220;zebra&#8221;</a></li><li><a href="http://brunotorres.net/saiu-debian-sarge" rel="bookmark" class="crp_title">Saiu o Sarge, nova versÃ£o do Debian GNU/Linux</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://brunotorres.net/compilar-kernel-24/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

