{"id":378,"date":"2013-11-04T19:04:37","date_gmt":"2013-11-04T18:04:37","guid":{"rendered":"http:\/\/www.instruyete.org\/?p=378"},"modified":"2013-11-04T19:04:37","modified_gmt":"2013-11-04T18:04:37","slug":"gcc-benoetigte-bibliotheken-nach-dem-object-file","status":"publish","type":"post","link":"https:\/\/www.instruyete.org\/?p=378","title":{"rendered":"gcc: ben\u00f6tigte Bibliotheken nach dem object file"},"content":{"rendered":"<p>Eine \u00dcberraschung erlebte ich beim Bauen einfacher Demonstrationsprogramme unter Ubuntu 12.04. Folgende Anweisung:<br \/>\n<code><br \/>\ngcc -lpthread -o pthread_demo pthread_demo.c<\/code><\/p>\n<p>erzeugte beim Linkvorgang mehrere <em>unresolved symbols<\/em> bzgl. <em>pthread<\/em> Methoden. Tats\u00e4chlich wurde aber mit gleicher Anweisung das Programm zu den Anfangszeiten von Ubuntu 12.04 gebaut. Eine Umstellung des Linker Programms <strong>ld<\/strong> bzw. der Aufruf desjeniegen durch <strong>gcc<\/strong> d\u00fcrfte daran schuld sein. In <strong>ld<\/strong> Version <strong>2.20<\/strong> f\u00fchrt der Linker-Flag<br \/>\n<code><br \/>\n--as-needed<\/code><\/p>\n<p>dazu, dass Bibliotheken nur noch gelinkt werden wenn diese <em>undefined Symbols<\/em> im Objekt File oder einer zuvor gelinkten Bibliothek aufl\u00f6sen kann. Daher mu\u00df von nun an das Objekt File vor den ben\u00f6tigten Bibliotheken im <strong>gcc<\/strong> Aufruf stehen.<br \/>\n<code><br \/>\ngcc -o pthread_demo pthread_demo.c -lpthread<\/code><\/p>\n<p>Alternativ k\u00f6nnte man das alte Verhalten mit folgendem Linker-Flag wiederherstellen<\/p>\n<p><code>gcc -Wl,--no-as-needed -lpthread -o pthread_demo pthread_demo.c<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine \u00dcberraschung erlebte ich beim Bauen einfacher Demonstrationsprogramme unter Ubuntu 12.04. Folgende Anweisung: gcc -lpthread -o pthread_demo pthread_demo.c erzeugte beim Linkvorgang mehrere unresolved symbols bzgl. pthread Methoden. Tats\u00e4chlich wurde aber mit gleicher Anweisung das Programm zu den Anfangszeiten von Ubuntu 12.04 gebaut. Eine Umstellung des Linker Programms ld bzw. der Aufruf desjeniegen durch gcc d\u00fcrfte &hellip; <a href=\"https:\/\/www.instruyete.org\/?p=378\" class=\"more-link\"><span class=\"screen-reader-text\">gcc: ben\u00f6tigte Bibliotheken nach dem object file<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,7],"tags":[],"class_list":["post-378","post","type-post","status-publish","format-standard","hentry","category-linux","category-unix"],"_links":{"self":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts\/378","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=378"}],"version-history":[{"count":0,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts\/378\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=378"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=378"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=378"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}