{"id":46498,"date":"2025-09-20T21:53:29","date_gmt":"2025-09-21T00:53:29","guid":{"rendered":"https:\/\/mastertrend.info\/?p=46498"},"modified":"2025-09-20T21:54:03","modified_gmt":"2025-09-21T00:54:03","slug":"compilar-no-linux","status":"publish","type":"post","link":"https:\/\/mastertrend.info\/pt\/compilar-en-linux\/","title":{"rendered":"Compile no Linux: Execute em minutos com 3 comandos \u26a1"},"content":{"rendered":"<h2>Compilando no Linux: 3 etapas para criar bin\u00e1rios \ud83d\udd25<\/h2>\n<h3 class=\"title icon i-list\">Resumo principal<\/h3>\n<ul>\n<li>A maioria dos softwares segue um processo de 3 etapas para compilar a partir do c\u00f3digo-fonte: <code>.\/configure &amp;&amp; make &amp;&amp; make install<\/code>.<\/li>\n<li>O roteiro <strong>configurar<\/strong> verifica as depend\u00eancias, <strong>fazer<\/strong> gera o execut\u00e1vel e ferramentas como <em>autoconf\/automake<\/em> automatizar esse processo.<\/li>\n<li>A instala\u00e7\u00e3o geralmente \u00e9 opcional, facilitando a execu\u00e7\u00e3o de comandos copiados em diret\u00f3rios no <code>CAMINHO<\/code> do sistema.<\/li>\n<\/ul>\n<p>Compilar a partir do c\u00f3digo-fonte pode parecer intimidador em compara\u00e7\u00e3o ao uso de gerenciadores de pacotes, mas com tr\u00eas comandos b\u00e1sicos, o processo \u00e9 simples e direto. \ud83d\ude80<\/p>\n<h2 id=\"que-es-compilar-desde-fuente\">O que \u00e9 compilar a partir do c\u00f3digo-fonte?<\/h2>\n<p>Os programas que voc\u00ea usa podem ser interpretados ou compilados. Programas interpretados s\u00e3o arquivos de texto contendo c\u00f3digo que outro programa (o interpretador) executa em tempo real. Programas compilados, por outro lado, s\u00e3o arquivos bin\u00e1rios contendo c\u00f3digo de m\u00e1quina pronto para ser executado.<\/p>\n<p>Execut\u00e1veis compilados s\u00e3o muito comuns, especialmente em programas grandes. Ao compilar a partir do c\u00f3digo-fonte, voc\u00ea<a href=\"https:\/\/pt.wikipedia.org\/wiki\/GNU_Compiler_Collection\" target=\"_blank\" rel=\"noopener\" data-schema-attribute=\"mentions\">sas um compilador como <code>gcc<\/code><\/a> para converter o c\u00f3digo em um programa execut\u00e1vel, geralmente distribu\u00eddo em v\u00e1rios arquivos.<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 768px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 481px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 0px)\" data-=\"\" \/><\/picture> <picture><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/04\/Construye-software-Linux-desde-el-codigo-fuente-en-3-sencillos.jpg\" alt=\"Terminal Linux mostrando a instala\u00e7\u00e3o do Steam com comandos.\" width=\"2100\" height=\"1400\" title=\"\"><\/picture><\/figure>\n<p>O processo de compila\u00e7\u00e3o pode ser extenso e complexo, por isso geralmente \u00e9 automatizado com programas como <code>fazer<\/code>. Os arquivos <em>arquivos make<\/em> controlar como o execut\u00e1vel final \u00e9 constru\u00eddo.<\/p>\n<p>Em grandes projetos, estes <em>arquivos make<\/em> Eles podem ser t\u00e3o complexos que s\u00e3o gerados automaticamente com ferramentas como <em>autoconf<\/em> e <em>fabrica\u00e7\u00e3o de autom\u00f3veis<\/em> para garantir compatibilidade entre diferentes arquiteturas. \ud83d\udee0\ufe0f<\/p>\n<h2 id=\"proceso-3-pasos-configure-make-install\">Processo de constru\u00e7\u00e3o em 3 etapas: configurar, criar, instalar<\/h2>\n<p>A maioria dos softwares usa esse padr\u00e3o b\u00e1sico para compilar a partir do c\u00f3digo-fonte:<\/p>\n<pre><code class=\"hljs bash\">.\/configure &amp;&amp; make &amp;&amp; make install\r\n<\/code><\/pre>\n<p>Programas populares como o Apache usam essa sequ\u00eancia (ou alguma variante), como <a title=\"A estrutura de diret\u00f3rios do Linux, explicada\" href=\"https:\/\/mastertrend.info\/pt\/estrutura-de-diretorios-do-linux\/\" target=\"_blank\" rel=\"noopener\" data-wpil-monitor-id=\"6412\">explica seu arquivo<\/a> INSTALAR:<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 768px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 481px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 0px)\" data-=\"\" \/><\/picture> <picture><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/04\/Construye-software-Linux-desde-el-codigo-fuente-en-3-sencillos.png\" alt=\"Fragmento do arquivo INSTALL do Apache mostrando as etapas .\/configure, make e make install.\" width=\"997\" height=\"461\" title=\"\"><\/picture><\/figure>\n<p>O Node.js tamb\u00e9m segue esta estrutura, conforme indicado em seu arquivo BUILDING.md:<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 768px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 481px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 0px)\" data-=\"\" \/><\/picture> <picture><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/04\/1745710606_229_Construye-software-Linux-desde-el-codigo-fuente-en-3-sencillos.png\" alt=\"Trecho do arquivo BUILDING.md do Node.js mostrando .\/configure, make e make install.\" width=\"1294\" height=\"711\" title=\"\"><\/picture><\/figure>\n<p>Cada projeto pode ter pequenas varia\u00e7\u00f5es desta sequ\u00eancia de comandos. Use o operador l\u00f3gico AND (<code>&&<\/code>) interrompe o processo se alguma etapa falhar:<\/p>\n<pre><code class=\"hljs bash\">.\/configure &amp;&amp; make &amp;&amp; make install\r\n<\/code><\/pre>\n<p>Ou voc\u00ea pode executar cada comando separadamente em uma \u00fanica linha com um ponto e v\u00edrgula, embora isso execute todos os comandos sem parar se algum falhar:<\/p>\n<pre><code class=\"hljs bash\">.\/configurar; fazer; fazer instalar\r\n<\/code><\/pre>\n<p>Voc\u00ea tamb\u00e9m pode fazer as tr\u00eas linhas separadamente:<\/p>\n<pre><code class=\"hljs bash\">.\/configure fazer fazer instalar\r\n<\/code><\/pre>\n<p>Se voc\u00ea quiser apenas experimentar o programa sem instal\u00e1-lo, voc\u00ea pode pular <code>fazer instalar<\/code> e execut\u00e1-lo a partir de sua pasta.<\/p>\n<section class=\"emaki-custom-block emaki-custom-tip\" data-nosnippet=\"\">Alguns reposit\u00f3rios t\u00eam o script <code>configurar<\/code> Pronto, enquanto outros (como o grep) exigem a execu\u00e7\u00e3o de outro script para ger\u00e1-lo. Sempre consulte o arquivo INSTALL, BUILD ou README para seguir as recomenda\u00e7\u00f5es do projeto. \ud83d\udccb<\/section>\n<h2 id=\"como-inicia-configure\">Como .\/configure inicia o processo<\/h2>\n<p>O roteiro <code>configurar<\/code> \u00c9 o ponto de partida do processo de compila\u00e7\u00e3o, adaptando o projeto ao seu ambiente.<\/p>\n<p>Este script verifica as depend\u00eancias necess\u00e1rias para o projeto, verificando vers\u00f5es e disponibilidade. Ap\u00f3s a conclus\u00e3o, ele gera um arquivo chamado <code>Makefile<\/code> para a pr\u00f3xima fase.<\/p>\n<p>O roteiro <code>configurar<\/code> oferece muitas op\u00e7\u00f5es configur\u00e1veis com <code>.\/configure --ajuda<\/code>, permitindo que voc\u00ea personalize os detalhes da constru\u00e7\u00e3o.<\/p>\n<section class=\"emaki-custom-block emaki-custom-tip\" data-nosnippet=\"\">Muito <code>configurar<\/code> como <code>fazer<\/code> gerar muita sa\u00edda na tela. Use a op\u00e7\u00e3o <code>--quieto<\/code> se voc\u00ea quiser executar esses comandos sem mostrar tantos detalhes. \ud83e\udd2b<\/section>\n<p>Se o script estiver faltando <code>configurar<\/code>, alguns projetos incluem um script como <code>autogen.sh<\/code> para ger\u00e1-lo. Por exemplo, o htop o utiliza:<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 768px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 481px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 0px)\" data-=\"\" \/><\/picture> <picture><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/04\/1745710607_775_Construye-software-Linux-desde-el-codigo-fuente-en-3-sencillos.png\" alt=\"Sa\u00edda do script autogen.sh no c\u00f3digo-fonte htop gerando configure.\" width=\"877\" height=\"621\" title=\"\"><\/picture><\/figure>\n<p>Projetos muito simples ou projetos escritos em outras l\u00ednguas podem n\u00e3o ter <code>configurar<\/code>. L\u00e1 o processo ocorre em duas etapas: <code>fa\u00e7a &amp;&amp; fa\u00e7a instalar<\/code>.<\/p>\n<p>O roteiro <code>configurar<\/code> Ele tamb\u00e9m controla detalhes da instala\u00e7\u00e3o, como o par\u00e2metro <code>--prefixo<\/code>, que define o diret\u00f3rio raiz da instala\u00e7\u00e3o. Por padr\u00e3o, \u00e9 <code>\/usr\/local<\/code>, mas voc\u00ea pode alter\u00e1-lo para organizar melhor seus arquivos.<\/p>\n<h2 id=\"hacer-la-mayor-parte-del-trabajo\">faz a maior parte do trabalho<\/h2>\n<p>Depois <code>configurar<\/code> gera um <code>Makefile<\/code>, a compila\u00e7\u00e3o real do software come\u00e7a com <code>fazer<\/code>.<\/p>\n<p>Este programa l\u00ea o <code>Makefile<\/code> e segue regras para decidir quais arquivos criar ou atualizar. O <code>Makefiles<\/code> manuscritos s\u00e3o f\u00e1ceis de entender para aqueles que conhecem a sintaxe.<\/p>\n<p>Por exemplo, este aqui <code>Makefile<\/code> simple compila um programa que depende do arquivo <code>programa.c<\/code>:<\/p>\n<pre><code class=\"hljs makefile\">programa: programa.c gcc -o programa programa.c\r\n<\/code><\/pre>\n<p><code>fazer<\/code> verifique se <code>programa.c<\/code> mudou desde a \u00faltima compila\u00e7\u00e3o. Se n\u00e3o mudou, n\u00e3o fa\u00e7a nada; se mudou, compile com <code>gcc<\/code>.<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 768px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 481px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 0px)\" data-=\"\" \/><\/picture> <picture><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/04\/1745710607_894_Construye-software-Linux-desde-el-codigo-fuente-en-3-sencillos.jpg\" alt=\"Close-up das teclas iluminadas do Das Keyboard 6 Professional.\" width=\"1920\" height=\"1080\" title=\"\"><\/picture><\/figure>\n<p>O <code>arquivos make<\/code> gerados automaticamente s\u00e3o geralmente muito mais complexos. Por exemplo, o <code>makefile<\/code> htop tem 2.440 linhas:<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 768px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 481px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 0px)\" data-=\"\" \/><\/picture> <picture><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/04\/1745710607_705_Construye-software-Linux-desde-el-codigo-fuente-en-3-sencillos.png\" alt=\"Fragmento do Makefile gerado automaticamente para o projeto htop.\" width=\"850\" height=\"660\" title=\"\"><\/picture><\/figure>\n<p>Mas voc\u00ea n\u00e3o precisa entender todos os detalhes. A menos que voc\u00ea modifique o c\u00f3digo-fonte, basta execut\u00e1-lo. <code>fazer<\/code> e deixe o sistema cuidar disso.<\/p>\n<p>O passo <code>fazer<\/code> Pode levar minutos ou mais para projetos grandes. Se falhar, geralmente \u00e9 devido \u00e0 falta de depend\u00eancias. A vantagem \u00e9 que <code>fazer<\/code> salva o progresso e continua de onde parou quando voc\u00ea corre novamente.<\/p>\n<h2 id=\"finalizando-con-make-install\">Finalizando com make install<\/h2>\n<p>Ap\u00f3s a compila\u00e7\u00e3o, o execut\u00e1vel criado geralmente fica localizado na raiz do projeto ou em um subdiret\u00f3rio chamado <code>lixeira<\/code>. Voc\u00ea pode execut\u00e1-lo usando o caminho completo:<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 768px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 481px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 0px)\" data-=\"\" \/><\/picture> <picture><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/04\/1745710607_488_Construye-software-Linux-desde-el-codigo-fuente-en-3-sencillos.png\" alt=\"Executar make no diret\u00f3rio cli cria um subdiret\u00f3rio bin com o execut\u00e1vel final.\" width=\"862\" height=\"381\" title=\"\"><\/picture><\/figure>\n<p>Isso \u00e9 \u00fatil para testes, mas a longo prazo voc\u00ea vai querer instal\u00e1-lo em um local acess\u00edvel.<\/p>\n<p>O objetivo <code>instalar<\/code> que define o <code>makefile<\/code> Copie os arquivos necess\u00e1rios e defina as permiss\u00f5es. O local padr\u00e3o \u00e9 <code>\/usr\/local\/bin<\/code>, embora voc\u00ea possa alter\u00e1-lo com <code>--prefixo<\/code>.<\/p>\n<p>Se voc\u00ea n\u00e3o tiver permiss\u00f5es para essa pasta, execute <code>sudo make install<\/code> e fornece a senha do administrador.<\/p>\n<p>O diret\u00f3rio de instala\u00e7\u00e3o deve ser inclu\u00eddo na sua vari\u00e1vel <code>CAMINHO<\/code> para poder executar o programa apenas com seu nome, sem especificar o caminho completo.<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 768px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 481px)\" data-=\"\" \/><\/picture> <picture><source media=\"(min-width: 0px)\" data-=\"\" \/><\/picture> <picture><\/picture><\/figure>","protected":false},"excerpt":{"rendered":"<p>Compilar en Linux: domina .\/configure &#038;&#038; make &#038;&#038; make install en 3 pasos, evita paquetes y gana control total del software ahora mismo. \ud83d\udee0\ufe0f\u26a1<\/p>","protected":false},"author":1,"featured_media":72931,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ai_generated_summary":"","iawp_total_views":49,"jnews-multi-image_gallery":[],"jnews_single_post":{"format":"standard","override":[{"template":"1","parallax":"1","fullscreen":"1","layout":"right-sidebar","sidebar":"default-sidebar","second_sidebar":"default-sidebar","sticky_sidebar":"1","share_position":"top","share_float_style":"share-monocrhome","show_share_counter":"1","show_view_counter":"1","show_featured":"1","show_post_meta":"1","show_post_author":"1","show_post_author_image":"1","show_post_date":"1","post_date_format":"default","post_date_format_custom":"Y\/m\/d","show_post_category":"1","show_post_reading_time":"1","post_reading_time_wpm":"300","post_calculate_word_method":"str_word_count","show_zoom_button":"1","zoom_button_out_step":"2","zoom_button_in_step":"3","show_post_tag":"1","show_prev_next_post":"1","show_popup_post":"1","number_popup_post":"1","show_author_box":"1","show_post_related":"0","show_inline_post_related":"0"}],"image_override":[{"single_post_thumbnail_size":"crop-500","single_post_gallery_size":"crop-500"}],"trending_post_position":"meta","trending_post_label":"Trending","sponsored_post_label":"Sponsored by","disable_ad":"0","subtitle":""},"jnews_primary_category":[],"jnews_social_meta":[],"jnews_review":[],"enable_review":"","type":"percentage","name":"","summary":"","brand":"","sku":"","good":[],"bad":[],"score_override":"","override_value":"","rating":[],"price":[],"jnews_override_counter":{"view_counter_number":"0","share_counter_number":"0","like_counter_number":"0","dislike_counter_number":"0"},"footnotes":""},"categories":[1435],"tags":[1445,1821,1558],"class_list":["post-46498","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriales","tag-evergreencontent","tag-linux","tag-techtips"],"_links":{"self":[{"href":"https:\/\/mastertrend.info\/pt\/wp-json\/wp\/v2\/posts\/46498","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mastertrend.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mastertrend.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mastertrend.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mastertrend.info\/pt\/wp-json\/wp\/v2\/comments?post=46498"}],"version-history":[{"count":0,"href":"https:\/\/mastertrend.info\/pt\/wp-json\/wp\/v2\/posts\/46498\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mastertrend.info\/pt\/wp-json\/wp\/v2\/media\/72931"}],"wp:attachment":[{"href":"https:\/\/mastertrend.info\/pt\/wp-json\/wp\/v2\/media?parent=46498"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mastertrend.info\/pt\/wp-json\/wp\/v2\/categories?post=46498"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mastertrend.info\/pt\/wp-json\/wp\/v2\/tags?post=46498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}