{"id":2125,"date":"2025-01-08T08:00:00","date_gmt":"2025-01-08T07:00:00","guid":{"rendered":"https:\/\/www.fuhselab.de\/?p=2125"},"modified":"2024-12-11T07:18:19","modified_gmt":"2024-12-11T06:18:19","slug":"dynamische-bibliotheken-1","status":"publish","type":"post","link":"https:\/\/www.fuhselab.de\/index.php\/2025\/01\/08\/dynamische-bibliotheken-1\/","title":{"rendered":"Dynamische Bibliotheken 1"},"content":{"rendered":"\n<p><br>Dieser Artikel taucht jetzt in die Welt der \u201cDynamischen Bibliotheken\u201c ab. Da ich selber noch etwas zu diesem Thema lernen m\u00f6chte, w\u00e4hle ich einen sehr einfachen und praxisbezogenen Ansatz f\u00fcr diesen Artikel\u2026<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Eine Programmbibliothek bezeichnet in der Programmierung eine Sammlung von Unterprogrammen, die L\u00f6sungswege f\u00fcr thematisch zusammengeh\u00f6rende Problemstellungen anbieten. Oft ben\u00f6tigte Programmfunktionen werden also nicht fest in das Programm geschrieben, sondern extern per Schnittstelle zur Verf\u00fcgung gestellt. Die Einbindung kann dann wahlweise statisch oder dynamisch erfolgen. Weitere Details dazu sp\u00e4ter. Hier interessiert uns mehr die dynamische Einbindung von Bibliotheken.<\/p>\n\n\n\n<p><strong>Die Programmbibliothek <\/strong><strong>libc<\/strong><strong>:<\/strong><\/p>\n\n\n\n<p>Zentral f\u00fcr die Funktion eines Linux-Systems ist zum Beispiel die libc , die alle m\u00f6glichen lebensnotwendigen Funktionen f\u00fcr Programme b\u00fcndelt, die in der Programmiersprache C geschrieben sind. Auf einem Linux-System gibt es hunderte bis tausende Bibliotheken.<\/p>\n\n\n\n<p><strong>Linker und Compiler:<\/strong><\/p>\n\n\n\n<p>Ein Linker verbindet die verschiedenen Teile eines Computerprogramms. Der Linker bindet also die Bibliotheken ein\u2026 Ein Compiler wandelt den lesbaren Code in die einzige Sprache um, die ein Computer wirklich versteht und das sind Nullen und Einsen.<\/p>\n\n\n\n<p><strong>Praxisbeispiel 1:<\/strong><\/p>\n\n\n\n<p>Der Code wird mit einem gew\u00f6hnlichen Texteditor geschrieben und als cpp-Datei abgespeichert.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream>\nint main()\n{\nstd::cout &lt;&lt; \"Hallo Welt!\" &lt;&lt;\nstd::endl;\nstd:: cin.get();\nreturn 0;\n}<\/code><\/pre>\n\n\n\n<p>Nun geht es ins Terminal\u2026Die gerade erzeugte Datei (hier hallo.cpp) wird nun mit folgendem Terminalbefehl kompiliert..<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>g++ hallo.cpp<\/li>\n<\/ul>\n\n\n\n<p>Durch den Compiler wird nun eine out-Datei erzeugt. Der Name der Output-Datei kann \u00fcbrigens auch gleich mit angegeben werden.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>g++ -o Dateiname.out Dateiname.cpp<\/li>\n\n\n\n<li>g++ -o hallo.out hallo.cpp<\/li>\n<\/ul>\n\n\n\n<p>Abschlie\u00dfend wird das Programm mit folgendem Befehl im Terminal ausgef\u00fchrt\u2026<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>.\/Dateiname.out \u2022 .\/hallo.out<\/li>\n<\/ul>\n\n\n\n<p>Die Bibliothek wird in diesem Beispiel per include-Befehl eingef\u00fcgt und h\u00f6rt auf den Namen \u201ciostream\u201c\u2026 Mit dem cat-Befehl kann man auch mal in die out-Datei reinschauen\u2026wird aber sicher nicht wirklich schlauer daraus\u2026 Weiter geht es im n\u00e4chsten Artikel\u2026<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dieser Artikel taucht jetzt in die Welt der \u201cDynamischen Bibliotheken\u201c ab. Da ich selber noch etwas zu diesem Thema lernen m\u00f6chte, w\u00e4hle ich einen sehr einfachen und praxisbezogenen Ansatz f\u00fcr diesen Artikel\u2026<\/p>\n","protected":false},"author":1,"featured_media":791,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[21],"class_list":["post-2125","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","tag-linux-gruppe-peine"],"_links":{"self":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts\/2125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/comments?post=2125"}],"version-history":[{"count":2,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts\/2125\/revisions"}],"predecessor-version":[{"id":2178,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts\/2125\/revisions\/2178"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/media\/791"}],"wp:attachment":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/media?parent=2125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/categories?post=2125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/tags?post=2125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}