{"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":"kompiluj-w-systemie-linux-2","status":"publish","type":"post","link":"https:\/\/mastertrend.info\/pl\/compilar-en-linux\/","title":{"rendered":"Kompilacja w systemie Linux: Uruchom w kilka minut za pomoc\u0105 3 polece\u0144 \u26a1"},"content":{"rendered":"<h2>Kompilacja w systemie Linux: 3 kroki tworzenia plik\u00f3w binarnych \ud83d\udd25<\/h2>\n<h3 class=\"title icon i-list\">Podsumowanie kluczowe<\/h3>\n<ul>\n<li>Wi\u0119kszo\u015b\u0107 oprogramowania kompiluje si\u0119 z kodu \u017ar\u00f3d\u0142owego w 3-etapowym procesie: <code>.\/configure &amp;&amp; make &amp;&amp; make install<\/code>.<\/li>\n<li>Skrypt <strong>konfigurowa\u0107<\/strong> sprawdza zale\u017cno\u015bci, <strong>robi\u0107<\/strong> generuje plik wykonywalny i narz\u0119dzia takie jak <em>autoconf\/automake<\/em> zautomatyzowa\u0107 ten proces.<\/li>\n<li>Instalacja jest zazwyczaj opcjonalna, co u\u0142atwia uruchamianie polece\u0144 skopiowanych do katalog\u00f3w w <code>\u015aCIE\u017bKA<\/code> systemu.<\/li>\n<\/ul>\n<p>Kompilacja z kodu \u017ar\u00f3d\u0142owego mo\u017ce wydawa\u0107 si\u0119 onie\u015bmielaj\u0105ca w por\u00f3wnaniu z korzystaniem z mened\u017cer\u00f3w pakiet\u00f3w, ale dzi\u0119ki trzem podstawowym poleceniom proces ten staje si\u0119 prosty i przejrzysty. \ud83d\ude80<\/p>\n<h2 id=\"que-es-compilar-desde-fuente\">Czym jest kompilacja z kodu \u017ar\u00f3d\u0142owego?<\/h2>\n<p>U\u017cywane programy mog\u0105 by\u0107 interpretowane lub kompilowane. Programy interpretowane to pliki tekstowe zawieraj\u0105ce kod, kt\u00f3ry inny program (interpreter) wykonuje w czasie rzeczywistym. Programy kompilowane to natomiast pliki binarne zawieraj\u0105ce kod maszynowy gotowy do wykonania.<\/p>\n<p>Kompilowane pliki wykonywalne s\u0105 bardzo powszechne, zw\u0142aszcza w du\u017cych programach. Kompiluj\u0105c z kodu \u017ar\u00f3d\u0142owego,<a href=\"https:\/\/pt.wikipedia.org\/wiki\/GNU_Compiler_Collection\" target=\"_blank\" rel=\"noopener\" data-schema-attribute=\"mentions\">sas kompilator taki jak <code>gcc<\/code><\/a> aby przekonwertowa\u0107 kod na program wykonywalny, cz\u0119sto rozproszony w wielu plikach.<\/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 pokazuj\u0105cy instalacj\u0119 Steam za pomoc\u0105 polece\u0144.\" width=\"2100\" height=\"1400\" title=\"\"><\/picture><\/figure>\n<p>Proces kompilacji mo\u017ce by\u0107 rozleg\u0142y i z\u0142o\u017cony, dlatego zwykle jest automatyzowany za pomoc\u0105 program\u00f3w takich jak <code>robi\u0107<\/code>Pliki <em>pliki makefile<\/em> kontroluj spos\u00f3b tworzenia ko\u0144cowego pliku wykonywalnego.<\/p>\n<p>W du\u017cych projektach te <em>pliki makefile<\/em> Mog\u0105 by\u0107 tak z\u0142o\u017cone, \u017ce s\u0105 generowane automatycznie za pomoc\u0105 narz\u0119dzi takich jak <em>autokonfiguracja<\/em> I <em>automake<\/em> aby zapewni\u0107 kompatybilno\u015b\u0107 pomi\u0119dzy r\u00f3\u017cnymi architekturami. \ud83d\udee0\ufe0f<\/p>\n<h2 id=\"proceso-3-pasos-configure-make-install\">Proces kompilacji w 3 krokach: konfiguracja, tworzenie, instalacja<\/h2>\n<p>Wi\u0119kszo\u015b\u0107 oprogramowania wykorzystuje ten podstawowy wzorzec do kompilacji z kodu \u017ar\u00f3d\u0142owego:<\/p>\n<pre><code class=\"hljs bash\">.\/configure &amp;&amp; make &amp;&amp; make install\r\n<\/code><\/pre>\n<p>Popularne programy, takie jak Apache, wykorzystuj\u0105 t\u0119 sekwencj\u0119 (lub jak\u0105\u015b odmian\u0119), np. <a title=\"Struktura katalog\u00f3w Linuxa \u2013 wyja\u015bnienie\" href=\"https:\/\/mastertrend.info\/pl\/struktura-katalogow-linuxa\/\" target=\"_blank\" rel=\"noopener\" data-wpil-monitor-id=\"6412\">wyja\u015bnia sw\u00f3j plik<\/a> ZAINSTALOWA\u0106:<\/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=\"Fragment pliku INSTALL Apache pokazuj\u0105cy kroki .\/configure, make i make install.\" width=\"997\" height=\"461\" title=\"\"><\/picture><\/figure>\n<p>Node.js r\u00f3wnie\u017c stosuje t\u0119 struktur\u0119, co wida\u0107 w pliku 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=\"Fragment pliku Node.js BUILDING.md pokazuj\u0105cy .\/configure, make i make install.\" width=\"1294\" height=\"711\" title=\"\"><\/picture><\/figure>\n<p>Ka\u017cdy projekt mo\u017ce nieznacznie r\u00f3\u017cni\u0107 si\u0119 od tego ci\u0105gu polece\u0144. U\u017cyj operatora logicznego AND (<code>&&<\/code>) zatrzymuje proces, je\u015bli kt\u00f3rykolwiek z krok\u00f3w si\u0119 nie powiedzie:<\/p>\n<pre><code class=\"hljs bash\">.\/configure &amp;&amp; make &amp;&amp; make install\r\n<\/code><\/pre>\n<p>Mo\u017cna te\u017c uruchomi\u0107 ka\u017cde polecenie osobno w pojedynczym wierszu, oddzielaj\u0105c je \u015brednikiem. W takim przypadku wszystkie polecenia zostan\u0105 uruchomione bez zatrzymywania, je\u015bli kt\u00f3rekolwiek z nich zawiedzie:<\/p>\n<pre><code class=\"hljs bash\">.\/configure; make; make install\r\n<\/code><\/pre>\n<p>Mo\u017cna r\u00f3wnie\u017c wykona\u0107 te trzy linijki osobno:<\/p>\n<pre><code class=\"hljs bash\">.\/configure make make install\r\n<\/code><\/pre>\n<p>Je\u015bli chcesz po prostu wypr\u00f3bowa\u0107 program bez instalowania go, mo\u017cesz pomin\u0105\u0107 ten krok <code>zr\u00f3b instalacj\u0119<\/code> i uruchom go z jego folderu.<\/p>\n<section class=\"emaki-custom-block emaki-custom-tip\" data-nosnippet=\"\">Niekt\u00f3re repozytoria zawieraj\u0105 skrypt <code>konfigurowa\u0107<\/code> Gotowe, podczas gdy inne (jak grep) wymagaj\u0105 najpierw uruchomienia innego skryptu, aby je wygenerowa\u0107. Zawsze zapoznaj si\u0119 z plikami INSTALL, BUILD lub README, aby post\u0119powa\u0107 zgodnie z zaleceniami projektu. \ud83d\udccb<\/section>\n<h2 id=\"como-inicia-configure\">Jak .\/configure rozpoczyna proces<\/h2>\n<p>Skrypt <code>konfigurowa\u0107<\/code> Jest to punkt wyj\u015bcia procesu kompilacji, dostosowuj\u0105cy projekt do \u015brodowiska.<\/p>\n<p>Ten skrypt sprawdza zale\u017cno\u015bci wymagane dla projektu, sprawdzaj\u0105c wersje i dost\u0119pno\u015b\u0107. Po zako\u0144czeniu generuje plik o nazwie <code>Makefile<\/code> do nast\u0119pnej fazy.<\/p>\n<p>Skrypt <code>konfigurowa\u0107<\/code> oferuje wiele konfigurowalnych opcji z <code>.\/configure --help<\/code>, co pozwala na dostosowanie szczeg\u00f3\u0142\u00f3w kompilacji.<\/p>\n<section class=\"emaki-custom-block emaki-custom-tip\" data-nosnippet=\"\">A\u017c tak bardzo <code>konfigurowa\u0107<\/code> Jak <code>robi\u0107<\/code> generowa\u0107 du\u017co danych na ekranie. U\u017cyj opcji <code>--cichy<\/code> je\u015bli chcesz uruchomi\u0107 te polecenia bez pokazywania zbyt wielu szczeg\u00f3\u0142\u00f3w. \ud83e\udd2b<\/section>\n<p>Je\u015bli skryptu brakuje <code>konfigurowa\u0107<\/code>niekt\u00f3re projekty obejmuj\u0105 skrypt taki jak <code>autogen.sh<\/code> Aby go wygenerowa\u0107. Na przyk\u0142ad, htop go u\u017cywa:<\/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=\"Wyj\u015bcie skryptu autogen.sh w kodzie \u017ar\u00f3d\u0142owym htop generuj\u0105cym konfiguracj\u0119.\" width=\"877\" height=\"621\" title=\"\"><\/picture><\/figure>\n<p>Bardzo proste projekty lub projekty napisane w innych j\u0119zykach mog\u0105 nie mie\u0107 <code>konfigurowa\u0107<\/code>. W tym przypadku proces przebiega w dw\u00f3ch etapach: <code>make &amp;&amp; make install<\/code>.<\/p>\n<p>Skrypt <code>konfigurowa\u0107<\/code> Kontroluje r\u00f3wnie\u017c szczeg\u00f3\u0142y instalacji, takie jak parametry <code>--prefiks<\/code>, kt\u00f3ry ustawia katalog g\u0142\u00f3wny instalacji. Domy\u015blnie jest to <code>\/usr\/local<\/code>, ale mo\u017cesz to zmieni\u0107, aby lepiej zorganizowa\u0107 swoje pliki.<\/p>\n<h2 id=\"hacer-la-mayor-parte-del-trabajo\">make wykonuje wi\u0119kszo\u015b\u0107 pracy<\/h2>\n<p>Po <code>konfigurowa\u0107<\/code> generuje <code>Makefile<\/code>, faktyczna kompilacja oprogramowania zaczyna si\u0119 od <code>robi\u0107<\/code>.<\/p>\n<p>Ten program odczytuje <code>Makefile<\/code> i post\u0119puje zgodnie z zasadami, decyduj\u0105c, kt\u00f3re pliki utworzy\u0107 lub zaktualizowa\u0107. <code>Pliki Makefiles<\/code> Teksty pisane r\u0119cznie s\u0105 \u0142atwe do zrozumienia dla os\u00f3b znaj\u0105cych sk\u0142adni\u0119.<\/p>\n<p>Na przyk\u0142ad ten <code>Makefile<\/code> po prostu kompiluje program, kt\u00f3ry zale\u017cy od pliku <code>program.c<\/code>:<\/p>\n<pre><code class=\"hljs makefile\">program: program.c gcc -o program program.c\r\n<\/code><\/pre>\n<p><code>robi\u0107<\/code> sprawd\u017a czy <code>program.c<\/code> Zmienione od ostatniej kompilacji. Je\u015bli nic si\u0119 nie zmieni\u0142o, nie r\u00f3b nic; je\u015bli jednak si\u0119 zmieni\u0142o, skompiluj z <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=\"Zbli\u017cenie pod\u015bwietlanych klawiszy klawiatury Das Keyboard 6 Professional.\" width=\"1920\" height=\"1080\" title=\"\"><\/picture><\/figure>\n<p>Ten <code>pliki makefile<\/code> generowanych automatycznie s\u0105 zazwyczaj znacznie bardziej z\u0142o\u017cone. Na przyk\u0142ad, <code>plik makefile<\/code> htop ma 2440 linii:<\/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=\"Fragment automatycznie wygenerowanego pliku Makefile dla projektu htop.\" width=\"850\" height=\"660\" title=\"\"><\/picture><\/figure>\n<p>Ale nie musisz rozumie\u0107 ka\u017cdego szczeg\u00f3\u0142u. Chyba \u017ce modyfikujesz kod \u017ar\u00f3d\u0142owy, po prostu go uruchom. <code>robi\u0107<\/code> i pozw\u00f3l systemowi si\u0119 tym zaj\u0105\u0107.<\/p>\n<p>Krok <code>robi\u0107<\/code> W przypadku du\u017cych projekt\u00f3w mo\u017ce to potrwa\u0107 kilka minut lub d\u0142u\u017cej. Je\u015bli si\u0119 nie powiedzie, zazwyczaj wynika to z brakuj\u0105cych zale\u017cno\u015bci. Zalet\u0105 jest to, \u017ce <code>robi\u0107<\/code> zapisuje post\u0119p i wznawia dzia\u0142anie od miejsca, w kt\u00f3rym zosta\u0142o przerwane, gdy ponownie biegniesz.<\/p>\n<h2 id=\"finalizando-con-make-install\">Zako\u0144czenie poleceniem make install<\/h2>\n<p>Po skompilowaniu utworzony plik wykonywalny zwykle znajduje si\u0119 w katalogu g\u0142\u00f3wnym projektu lub w podkatalogu o nazwie <code>kosz<\/code>Mo\u017cesz uruchomi\u0107 go u\u017cywaj\u0105c pe\u0142nej \u015bcie\u017cki:<\/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=\"Uruchomienie make w katalogu cli powoduje utworzenie podkatalogu bin zawieraj\u0105cego ko\u0144cowy plik wykonywalny.\" width=\"862\" height=\"381\" title=\"\"><\/picture><\/figure>\n<p>Przydaje si\u0119 to do cel\u00f3w testowych, ale na d\u0142u\u017csz\u0105 met\u0119 warto zainstalowa\u0107 urz\u0105dzenie w \u0142atwo dost\u0119pnym miejscu.<\/p>\n<p>Cel <code>zainstalowa\u0107<\/code> kt\u00f3ry definiuje <code>plik makefile<\/code> Skopiuj niezb\u0119dne pliki i ustaw uprawnienia. Domy\u015blna lokalizacja to <code>\/usr\/local\/bin<\/code>, chocia\u017c mo\u017cesz to zmieni\u0107 za pomoc\u0105 <code>--prefiks<\/code>.<\/p>\n<p>Je\u015bli nie masz uprawnie\u0144 do tego folderu, uruchom <code>sudo make install<\/code> i podaje has\u0142o administratora.<\/p>\n<p>Katalog instalacyjny musi by\u0107 uwzgl\u0119dniony w zmiennej <code>\u015aCIE\u017bKA<\/code> m\u00f3c uruchomi\u0107 program, podaj\u0105c tylko jego nazw\u0119, bez konieczno\u015bci okre\u015blania pe\u0142nej \u015bcie\u017cki.<\/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>Kompilacja w systemie Linux: opanuj .\/configure &amp;&amp; make &amp;&amp; make install w 3 krokach, unikaj pakiet\u00f3w i zyskaj pe\u0142n\u0105 kontrol\u0119 nad oprogramowaniem ju\u017c teraz. \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":78,"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\/pl\/wp-json\/wp\/v2\/posts\/46498","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mastertrend.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mastertrend.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mastertrend.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mastertrend.info\/pl\/wp-json\/wp\/v2\/comments?post=46498"}],"version-history":[{"count":0,"href":"https:\/\/mastertrend.info\/pl\/wp-json\/wp\/v2\/posts\/46498\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mastertrend.info\/pl\/wp-json\/wp\/v2\/media\/72931"}],"wp:attachment":[{"href":"https:\/\/mastertrend.info\/pl\/wp-json\/wp\/v2\/media?parent=46498"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mastertrend.info\/pl\/wp-json\/wp\/v2\/categories?post=46498"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mastertrend.info\/pl\/wp-json\/wp\/v2\/tags?post=46498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}