{"id":91,"date":"2010-07-24T20:40:00","date_gmt":"2010-07-24T20:40:00","guid":{"rendered":"http:\/\/antynet.pl\/index.php\/2010\/07\/24\/linux-compile\/"},"modified":"2010-08-24T23:03:01","modified_gmt":"2010-08-24T21:03:01","slug":"kompilacja","status":"publish","type":"post","link":"https:\/\/www.antynet.pl\/index.php\/2010\/07\/24\/kompilacja\/","title":{"rendered":"Kompilacja"},"content":{"rendered":"<p>.h #pliki nag\u0142\u00f3wkowe<\/p>\n<p>.c #pliki \u017ar\u00f3d\u0142owe<\/p>\n<p>lib*.a #pliki bibliotek statycznych, kompilator umieszcza pliki bezpo\u015brednio w pliku wykonywalnym za pomoc\u0105 archiwizatora ar<\/p>\n<p>.so #pliki bibliotek dzielonych, definicje dost\u0119pu znajduj\u0105 si\u0119 w \/etc\/ld.so.conf, do za\u0142adowania mo\u017cemy u\u017cy\u0107 zmiennej $LD_LIBRARY_PATH, kompilator rejestruje jedynie informacje o bibliotece wewn\u0105trz pliku wykonywalnego, kt\u00f3ra jest nast\u0119pnie do\u0142\u0105czana przez linker dynamiczny podczas wykonania programu bezpo\u015brednio przed wykonaniem funkcji main(), je\u015bli program nei mo\u017ce znale\u017a\u0107 tzw &#8222;shared object&#8221;, natychmiast zatrzymuje wykonanie z b\u0142\u0119dem,<br \/>\nwszystkie programy u\u017cywaj\u0105 jednej dzielonej biblioteki przechowywanej w pami\u0119ci<\/p>\n<p>configure #skrypt tworz\u0105cy plik Makefile i zale\u017cno\u015bci na podstawie Makefile.in<\/p>\n<p>make clean #usuwa pliki obiekt\u00f3w i bibliotek skompilowanych przez make<\/p>\n<p>make distclean #j.w. wraz ze skryptem stworzonym przez configure<\/p>\n<p>make install #kopiuje skompilowane pliki do odpowiednich \u015bcie\u017cek<\/p>\n<p>make uninstall #usuwa pliki skopiowane przez make install<\/p>\n<p>ldd [prog] #pokazuje zale\u017cno\u015bci shared libraries niezb\u0119dnych do uruchomienia [prog]<\/p>\n<p>nm [file].o #pokazuje list\u0119 symboli do kt\u00f3rych odnosi si\u0119 plik obiektu lub plik wykonywalny<\/p>\n<p>nm -guA *.o | grep [unresolved_symbol]<\/p>\n<p>nm -gA \/usr\/lib\/* | grep [unresolved_symbol]<\/p>\n<p>strace [prog] #pokazuje co dzieje si\u0119 z programem<\/p>\n<p>strace -p [pid] #dopina program strace pod konkretny pid<\/p>\n<p>strace -p [pid] -c #zlicza tzw. wait-y programu<\/p>\n","protected":false},"excerpt":{"rendered":"<p>.h #pliki nag\u0142\u00f3wkowe .c #pliki \u017ar\u00f3d\u0142owe lib*.a #pliki bibliotek statycznych, kompilator umieszcza pliki bezpo\u015brednio w pliku wykonywalnym za pomoc\u0105 archiwizatora ar .so #pliki bibliotek dzielonych, definicje dost\u0119pu znajduj\u0105 si\u0119 w \/etc\/ld.so.conf, do za\u0142adowania mo\u017cemy u\u017cy\u0107 zmiennej $LD_LIBRARY_PATH, kompilator rejestruje jedynie informacje o bibliotece wewn\u0105trz pliku wykonywalnego, kt\u00f3ra jest nast\u0119pnie do\u0142\u0105czana przez linker dynamiczny podczas wykonania [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[4],"tags":[8],"class_list":["post-91","post","type-post","status-publish","format-standard","hentry","category-sciaga-admina","tag-linux-compile"],"_links":{"self":[{"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/posts\/91","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/comments?post=91"}],"version-history":[{"count":7,"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/posts\/91\/revisions"}],"predecessor-version":[{"id":218,"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/posts\/91\/revisions\/218"}],"wp:attachment":[{"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/media?parent=91"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/categories?post=91"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/tags?post=91"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}