{"id":13968,"date":"2022-06-08T18:17:36","date_gmt":"2022-06-08T18:17:36","guid":{"rendered":"https:\/\/profi-tutorials.de\/linux\/?p=13968"},"modified":"2022-06-08T18:17:36","modified_gmt":"2022-06-08T18:17:36","slug":"befehl-make","status":"publish","type":"post","link":"https:\/\/profi-tutorials.de\/linux\/administration\/befehl-make\/","title":{"rendered":"Der Befehl make"},"content":{"rendered":"<p>In diesem Beitrag lernen Sie den Befehl make sowie die dazugeh&ouml;rigen sogenannten Makefiles kennen. Unter UNIX \/ Linux wird make als Werkzeug zum Aufl&ouml;sen der Abh&auml;ngigkeiten in Build-Prozessen und dem automatischen Rekompilieren von aktualisierten Teilen eingesetzt. &nbsp;Es existieren verschiedene Implementierungen, welche jedoch nicht vollst&auml;ndig kompatibel zueinander sind &ndash; dieser Beitrag konzentriert sich daher nur auf die GNU-Implementierung von make.<\/p>\n<h2 id=\"t-1653405923425\">Installation<\/h2>\n<p><strong>make <\/strong>ist im gleichnamigen Paket <strong>&ldquo;make&rdquo;<\/strong> enthalten und wird folgenderma&szlig;en mithilfe des Paketmanagers <strong>apt <\/strong>installiert:<\/p>\n<pre>apt-get install make<\/pre>\n<p>N&auml;here Informationen zur Paketverwaltung mit <strong>apt <\/strong>erfahren Sie <a href=\"https:\/\/profi-tutorials.de\/linux\/installation\/paket-verwaltung-apt\/\" target=\"_blank\" style=\"outline: none;\" rel=\"noopener\">in unserem dedizierten Beitrag dazu<\/a>.<\/p>\n<h2 id=\"t-1653405923426\">Allgemeine Syntax<\/h2>\n<p>Die allgemeine <a class=\"glossaryLink cmtt_Allgemein cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;Syntax&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;&#8203;Im  Allgemeinen wird unter Syntax ein Regel&#8203;system verstanden, welches zur  Kombination elementarer Zeichen zu zusammengesetzten &#8203;Zeichen in (...)&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/syntax\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Syntax<\/a> von <strong>make <\/strong>lautet folgenderma&szlig;en:<\/p>\n<pre>make [Optionen] [Targets]<\/pre>\n<h2 id=\"t-1653405923427\">Makefiles<\/h2>\n<p>Makefiles beschreiben mithilfe von Regeln, wie sogenannte <strong>&ldquo;Targets&rdquo;<\/strong> (Ziele) erstellt werden k&ouml;nnen. Meist sind Targets Namen von Dateien, die von einem Programm generiert werden &ndash; beispielsweise ausf&uuml;hrbare Dateien. Alternativ k&ouml;nnen Targets jedoch auch auszuf&uuml;hrende Aktionen, wie etwa das &ldquo;Aufr&auml;umen&rdquo; (&ldquo;clean&rdquo;), beschreiben. Ein Target kann dabei auch von anderen Targets oder Dateien abh&auml;ngen. Beispielhaft k&ouml;nnte ein Target, in Rahmen dessen ein Programm kompiliert werden soll, etwa den zu kompilierenden Quellcode als Abh&auml;ngigkeit haben.<\/p>\n<p>Eine einfache Regel hat den folgenden Aufbau:<\/p>\n[Target]: [Abh&auml;ngigkeit(en)]\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [Rezept]\n<\/p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &hellip;<\/p>\n<p>Der <strong>Name des Targets<\/strong> steht direkt am Anfang der Regel. Hinter einem <strong>Doppelpunkt &ldquo;:&rdquo;<\/strong> k&ouml;nnen dann die <strong>Abh&auml;ngigkeiten <\/strong>dieses Targets, jeweils mit Leerzeichen voneinander getrennt, aufgelistet werden. Das <strong>Rezept <\/strong>beschreibt schlie&szlig;lich die von <strong>make <\/strong>auszuf&uuml;hrenden Aktionen in Form von einem oder mehreren Befehlen. Die Befehle k&ouml;nnen auf einer Zeile, oder untereinander auf mehreren Zeilen stehen. Wichtig ist jedoch, dass jede Rezept-Zeile mit einem Tab beginnen muss.<\/p>\n<p>Der Dateiname einer Makefile sollte stets <strong>&ldquo;Makefile&rdquo;<\/strong> oder <strong>&ldquo;makefile&rdquo;<\/strong> sein. Sobald eine geeignete Makefile im Arbeitsverzeichnis bereitsteht, k&ouml;nnen alle n&ouml;tigen Neukompilierungen bzw. Aktualisierungen von Targets (nach &Auml;nderungen an Quelldateien) mithilfe des folgenden Befehlsaufrufs durchgef&uuml;hrt werden:<\/p>\n<pre>make<\/pre>\n<p>Das <strong>make<\/strong>-Programm entscheidet anhand der Makefile und der letzten &Auml;nderungszeitpunkte der Dateien, welche Dateien aktualisiert werden m&uuml;ssen. Ein Target wird aktualisiert, wenn mindestens eine Abh&auml;ngigkeit sich seit der letzten Aktualisierung ge&auml;ndert hat, oder wenn das Target noch nicht existiert. Die in der Makefile hinterlegten Befehle werden dann zum Aktualisieren der ausgew&auml;hlten Targets ausgef&uuml;hrt.<\/p>\n<h2 id=\"t-1654245933411\">Wichtige Optionen<\/h2>\n<p>Einige der wichtigsten Optionen von <strong>make <\/strong>werden im Folgenden kurz vorgestellt.<\/p>\n<h3 id=\"t-1654245933412\">-B &ndash; Alle Targets aktualisieren<\/h3>\n<p>Die <strong>Option -B<\/strong> f&uuml;hrt unbedingt zur Aktualisierung aller Targets:<\/p>\n<pre>make -B [Targets]<\/pre>\n<h3 id=\"t-1654245933413\">-f &ndash; Makefile spezifizieren<\/h3>\n<p>Mithilfe der <strong>Option -f<\/strong> ist die &Uuml;bergabe einer Datei, die als Makefile verwendet werden soll, m&ouml;glich:<\/p>\n<pre>make -f [Datei] [Targets]<\/pre>\n<h3 id=\"t-1654245933414\">-q &ndash; &ldquo;Question&rdquo;-Modus<\/h3>\n<p>Wird die <strong>Option -q<\/strong> verwendet, so f&uuml;hrt <strong>make <\/strong>keine Befehle aus und schreibt auch nichts in den Standard-Output <strong>stdout<\/strong>. Stattdessen gibt <strong>make<\/strong> lediglich den <strong>Exit-Code 0<\/strong> zur&uuml;ck, wenn alle spezifizierten Targets aktuell sind, andernfalls einen Exit-Code ungleich 0 (siehe auch <a href=\"#tve-jump-18128bdfffc\" jump-animation=\"smooth\" style=\"outline: none;\">Exit-Codes<\/a>):<\/p>\n<pre>make -q [Targets]<\/pre>\n<h2 id=\"tve-jump-18128bdfffc\">Exit-Codes<\/h2>\n<p>Der folgenden Tabelle sind die <strong>Exit-Codes<\/strong> sowie die jeweils mit ihnen angezeigten <strong>Status <\/strong>des Befehls <strong>make <\/strong>zu entnehmen:<\/p>\n<table data-rows=\"4\" data-cols=\"2\" data-v=\"middle\">\n<thead>\n<tr>\n<th style=\"\"><strong>Exit-Code<\/strong><\/th>\n<th style=\"\">Status<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td data-th=\"Exit-Code\" style=\"\">0<\/td>\n<td data-th=\"Status\" style=\"\">Alle Makefiles konnten erfolgreich geparst werden und keines der aktualisierten Targets ist fehlgeschlagen.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Exit-Code\" style=\"\">1<\/td>\n<td data-th=\"Status\" style=\"\">Wird ausgegeben, wenn die Option -q verwendet wurde und make festgestellt hat, dass ein Target aktualisiert werden muss.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Exit-Code\" style=\"\">2<\/td>\n<td data-th=\"Status\" style=\"\">Ein Fehler ist aufgetreten<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: center;\">Abonniere JETZT unseren Newsletter!<\/p>\n<p style=\"text-align: center;\">Verpasse nie wieder <strong>neue<\/strong> Beitr&auml;ge und <strong>exklusive Insider-Only-Inhalte!<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem Beitrag lernen Sie den Befehl make sowie die dazugeh\u00f6rigen sogenannten Makefiles kennen. Unter UNIX \/ Linux wird make als Werkzeug zum Aufl\u00f6sen der Abh\u00e4ngigkeiten in Build-Prozessen und dem automatischen Rekompilieren von aktualisierten Teilen eingesetzt. &nbsp;Es existieren verschiedene Implementierungen, welche jedoch nicht vollst\u00e4ndig kompatibel zueinander sind &#8211; dieser Beitrag konzentriert sich daher nur auf [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":13971,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","tve_updated_post":"<div class=\"thrv_wrapper thrv_text_element\">\t<p>In diesem Beitrag lernen Sie den Befehl make sowie die dazugeh\u00f6rigen sogenannten Makefiles kennen. Unter UNIX \/ Linux wird make als Werkzeug zum Aufl\u00f6sen der Abh\u00e4ngigkeiten in Build-Prozessen und dem automatischen Rekompilieren von aktualisierten Teilen eingesetzt. &nbsp;Es existieren verschiedene Implementierungen, welche jedoch nicht vollst\u00e4ndig kompatibel zueinander sind - dieser Beitrag konzentriert sich daher nur auf die GNU-Implementierung von make.<\/p><\/div><div class=\"thrv_wrapper thrv_contents_table\" data-columns=\"2\" data-headers=\"h2,h3\">\n\t<div class=\"tve_contents_table\">\n\t\t<span class=\"tve_ct_title\" style=\"\" data-css=\"tve-u-180f6ade4e8\">Inhaltsverzeichnis<\/span>\n\t\t<div class=\"tve_ct_content tve_clearfix\"><div class=\"ct_column\"><div class=\"tve_ct_level0\"><a href=\"#t-1653405923425\" rel=\"nofollow\">Installation<\/a><\/div><div class=\"tve_ct_level0\"><a href=\"#t-1653405923426\" rel=\"nofollow\">Allgemeine Syntax<\/a><\/div><div class=\"tve_ct_level0\"><a href=\"#t-1653405923427\" rel=\"nofollow\">Makefiles<\/a><\/div><\/div><div class=\"ct_column\"><div class=\"tve_ct_level0\"><a href=\"#t-1654245933411\" rel=\"nofollow\">Wichtige Optionen<\/a><\/div><div class=\"tve_ct_level1\"><a href=\"#t-1654245933412\" rel=\"nofollow\">-B - Alle Targets aktualisieren<\/a><\/div><div class=\"tve_ct_level1\"><a href=\"#t-1654245933413\" rel=\"nofollow\">-f - Makefile spezifizieren<\/a><\/div><div class=\"tve_ct_level1\"><a href=\"#t-1654245933414\" rel=\"nofollow\">-q - \"Question\"-Modus<\/a><\/div><div class=\"tve_ct_level0\"><a href=\"#tve-jump-18128bdfffc\" rel=\"nofollow\" class=\"tve-jump-scroll\">Exit-Codes<\/a><\/div><\/div><\/div>\n\t<\/div>\n<\/div><div class=\"thrv_wrapper thrv_text_element\"><h2 class=\"\" id=\"t-1653405923425\">Installation<\/h2><p><strong>make <\/strong>ist im gleichnamigen Paket <strong>\"make\"<\/strong> enthalten und wird folgenderma\u00dfen mithilfe des Paketmanagers <strong>apt <\/strong>installiert:<\/p><p>[code]apt-get install make[\/code]<\/p><p>N\u00e4here Informationen zur Paketverwaltung mit <strong>apt <\/strong>erfahren Sie <a href=\"https:\/\/profi-tutorials.de\/linux\/installation\/paket-verwaltung-apt\/\" target=\"_blank\" class=\"tve-froala fr-basic\" style=\"outline: none;\">in unserem dedizierten Beitrag dazu<\/a>.<\/p><h2 class=\"\" id=\"t-1653405923426\">Allgemeine Syntax<\/h2><p>Die allgemeine Syntax von <strong>make <\/strong>lautet folgenderma\u00dfen:<\/p><p>[code]make [Optionen] [Targets][\/code]<\/p><h2 class=\"\" id=\"t-1653405923427\">Makefiles<\/h2><p>Makefiles beschreiben mithilfe von Regeln, wie sogenannte <strong>\"Targets\"<\/strong> (Ziele) erstellt werden k\u00f6nnen. Meist sind Targets Namen von Dateien, die von einem Programm generiert werden - beispielsweise ausf\u00fchrbare Dateien. Alternativ k\u00f6nnen Targets jedoch auch auszuf\u00fchrende Aktionen, wie etwa das \"Aufr\u00e4umen\" (\"clean\"), beschreiben. Ein Target kann dabei auch von anderen Targets oder Dateien abh\u00e4ngen. Beispielhaft k\u00f6nnte ein Target, in Rahmen dessen ein Programm kompiliert werden soll, etwa den zu kompilierenden Quellcode als Abh\u00e4ngigkeit haben.<\/p><p>Eine einfache Regel hat den folgenden Aufbau:<\/p><\/div><div class=\"thrv_wrapper thrv_text_element\" style=\"\" data-css=\"tve-u-180fb987b37\"><p data-css=\"tve-u-180fb987b38\">[Target]: [Abh\u00e4ngigkeit(en)]<\/p><p data-css=\"tve-u-180fb987b38\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [Rezept]<\/p><p data-css=\"tve-u-180fb987b38\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...<\/p><\/div><div class=\"thrv_wrapper thrv_text_element\"><p>Der <strong>Name des Targets<\/strong> steht direkt am Anfang der Regel. Hinter einem <strong>Doppelpunkt \":\"<\/strong> k\u00f6nnen dann die <strong>Abh\u00e4ngigkeiten <\/strong>dieses Targets, jeweils mit Leerzeichen voneinander getrennt, aufgelistet werden. Das <strong>Rezept <\/strong>beschreibt schlie\u00dflich die von <strong>make <\/strong>auszuf\u00fchrenden Aktionen in Form von einem oder mehreren Befehlen. Die Befehle k\u00f6nnen auf einer Zeile, oder untereinander auf mehreren Zeilen stehen. Wichtig ist jedoch, dass jede Rezept-Zeile mit einem Tab beginnen muss.<\/p><p>Der Dateiname einer Makefile sollte stets <strong>\"Makefile\"<\/strong> oder <strong>\"makefile\"<\/strong> sein. Sobald eine geeignete Makefile im Arbeitsverzeichnis bereitsteht, k\u00f6nnen alle n\u00f6tigen Neukompilierungen bzw. Aktualisierungen von Targets (nach \u00c4nderungen an Quelldateien) mithilfe des folgenden Befehlsaufrufs durchgef\u00fchrt werden:<\/p><p>[code]make[\/code]<\/p><p>Das <strong>make<\/strong>-Programm entscheidet anhand der Makefile und der letzten \u00c4nderungszeitpunkte der Dateien, welche Dateien aktualisiert werden m\u00fcssen. Ein Target wird aktualisiert, wenn mindestens eine Abh\u00e4ngigkeit sich seit der letzten Aktualisierung ge\u00e4ndert hat, oder wenn das Target noch nicht existiert. Die in der Makefile hinterlegten Befehle werden dann zum Aktualisieren der ausgew\u00e4hlten Targets ausgef\u00fchrt.<\/p><h2 class=\"\" id=\"t-1654245933411\">Wichtige Optionen<\/h2><p>Einige der wichtigsten Optionen von <strong>make <\/strong>werden im Folgenden kurz vorgestellt.<\/p><h3 class=\"\" id=\"t-1654245933412\">-B - Alle Targets aktualisieren<\/h3><p>Die <strong>Option -B<\/strong> f\u00fchrt unbedingt zur Aktualisierung aller Targets:<\/p><p>[code]make -B [Targets][\/code]<\/p><h3 class=\"\" id=\"t-1654245933413\">-f - Makefile spezifizieren<\/h3><p>Mithilfe der <strong>Option -f<\/strong> ist die \u00dcbergabe einer Datei, die als Makefile verwendet werden soll, m\u00f6glich:<\/p><p>[code]make -f [Datei] [Targets][\/code]<\/p><h3 class=\"\" id=\"t-1654245933414\">-q - \"Question\"-Modus<\/h3><p>Wird die <strong>Option -q<\/strong> verwendet, so f\u00fchrt <strong>make <\/strong>keine Befehle aus und schreibt auch nichts in den Standard-Output <strong>stdout<\/strong>. Stattdessen gibt <strong>make<\/strong> lediglich den <strong>Exit-Code 0<\/strong> zur\u00fcck, wenn alle spezifizierten Targets aktuell sind, andernfalls einen Exit-Code ungleich 0 (siehe auch <a href=\"#tve-jump-18128bdfffc\" jump-animation=\"smooth\" class=\"tve-jump-scroll tve-froala\" style=\"outline: none;\">Exit-Codes<\/a>):<\/p><p>[code]make -q [Targets][\/code]<\/p><h2 class=\"\" id=\"tve-jump-18128bdfffc\">Exit-Codes<\/h2><p>Der folgenden Tabelle sind die <strong>Exit-Codes<\/strong> sowie die jeweils mit ihnen angezeigten <strong>Status <\/strong>des Befehls <strong>make <\/strong>zu entnehmen:<\/p><\/div><div class=\"thrv_wrapper thrv_table tcb-fixed tcb-mobile-table\" data-ct-name=\"Simple 01\" data-ct=\"table-37694\" data-element-name=\"Table\" data-css=\"tve-u-18128af24b3\"><table data-rows=\"4\" data-cols=\"2\" class=\"tve_table tcb-fixed tve_table_flat\" data-css=\"tve-u-18128af24b2\" data-v=\"middle\"><thead data-css=\"tve-u-18128af24b4\"><tr class=\"tve_table_row\"><th class=\"tve_table_cell\" style=\"\" data-css=\"tve-u-18128af24bf\"><div class=\"thrv_wrapper thrv_text_element\" data-css=\"tve-u-1702ecf6b87\"><p data-css=\"tve-u-18128af24be\"><strong>Exit-Code<\/strong><\/p><\/div><\/th><th class=\"tve_table_cell\" style=\"\" data-css=\"tve-u-1702eea2d74\"><div class=\"thrv_wrapper thrv_text_element\"><p data-css=\"tve-u-18128af24c0\">Status<\/p><\/div><\/th><\/tr><\/thead><tbody data-css=\"tve-u-18128af24b9\"><tr class=\"tve_table_row\"><td class=\"tve_table_cell\" data-th=\"Exit-Code\" data-css=\"tve-u-18128af24c4\" style=\"\"><div class=\"thrv_wrapper thrv_text_element\" data-css=\"tve-u-1702ecf6b8f\"><p>0<\/p><\/div><\/td><td class=\"tve_table_cell\" data-th=\"Status\" data-css=\"tve-u-18128af24c7\" style=\"\"><div class=\"thrv_wrapper thrv_text_element\" data-css=\"tve-u-1702ecf6b8f\"><p>Alle Makefiles konnten erfolgreich geparst werden und keines der aktualisierten Targets ist fehlgeschlagen.<\/p><\/div><\/td><\/tr><tr class=\"tve_table_row\"><td class=\"tve_table_cell\" data-th=\"Exit-Code\" data-css=\"tve-u-18128af24c5\" style=\"\"><div class=\"thrv_wrapper thrv_text_element\" data-css=\"tve-u-1702ecf6b8f\"><p>1<\/p><\/div><\/td><td class=\"tve_table_cell\" data-th=\"Status\" data-css=\"tve-u-18128af24c8\" style=\"\"><div class=\"thrv_wrapper thrv_text_element\" data-css=\"tve-u-1702ecf6b8f\"><p>Wird ausgegeben, wenn die Option -q verwendet wurde und make festgestellt hat, dass ein Target aktualisiert werden muss.<\/p><\/div><\/td><\/tr><tr class=\"tve_table_row\"><td class=\"tve_table_cell\" data-th=\"Exit-Code\" data-css=\"tve-u-18128af24c6\" style=\"\"><div class=\"thrv_wrapper thrv_text_element\" data-css=\"tve-u-1702ecf6b8f\"><p>2<\/p><\/div><\/td><td class=\"tve_table_cell\" data-th=\"Status\" data-css=\"tve-u-18128af24c9\" style=\"\"><div class=\"thrv_wrapper thrv_text_element\" data-css=\"tve-u-1702ecf6b8f\"><p>Ein Fehler ist aufgetreten<\/p><\/div><\/td><\/tr><\/tbody><\/table><\/div><div class=\"thrv_wrapper thrv_contentbox_shortcode thrv-content-box tve-elem-default-pad\" style=\"\" data-css=\"tve-u-180f6ae0250\">\n\t<div class=\"tve-content-box-background\" style=\"\" data-css=\"tve-u-180f6ae0253\"><\/div>\n\t<div class=\"tve-cb\"><div class=\"thrv_wrapper thrv_text_element\" style=\"\" data-css=\"tve-u-180f6ae0252\"><p data-css=\"tve-u-180f6ae024f\" style=\"text-align: center;\">Abonniere JETZT unseren Newsletter!<\/p><\/div><div class=\"thrv_wrapper thrv-divider\" data-style-d=\"tve_sep-1\" data-thickness-d=\"3\" data-color-d=\"rgb(70, 70, 70)\" data-css=\"tve-u-180f6ae0255\" style=\"\">\n\t<hr class=\"tve_sep tve_sep-1\" style=\"\">\n<\/div><div class=\"thrv_wrapper thrv_text_element\" style=\"\" data-css=\"tve-u-180f6ae0251\"><p data-css=\"tve-u-180f6ae0256\" style=\"text-align: center;\">Verpasse nie wieder <strong>neue<\/strong> Beitr\u00e4ge und <strong>exklusive Insider-Only-Inhalte!<\/strong><\/p><\/div><div class=\"thrv_wrapper thrv_lead_generation\" data-connection=\"custom-html\" data-css=\"tve-u-180f6ae0257\" style=\"\" data-settings-id=\"13972\" data-form-settings=\"__TCB_FORM__{&quot;v&quot;:1,&quot;apis&quot;:{},&quot;extra&quot;:{},&quot;captcha&quot;:0,&quot;custom_tags&quot;:{},&quot;inputs&quot;:{&quot;fields[fieldFirstName]&quot;:{&quot;id&quot;:&quot;fields[fieldFirstName]&quot;,&quot;label&quot;:&quot;fields[fieldFirstName]&quot;},&quot;email&quot;:{&quot;id&quot;:&quot;email&quot;,&quot;label&quot;:&quot;email&quot;},&quot;undefined&quot;:{}},&quot;form_identifier&quot;:&quot;der-befehl-make-form-ucszsw&quot;,&quot;form_type&quot;:&quot;lead_generation&quot;}__TCB_FORM__\"><input type=\"hidden\" class=\"tve-lg-err-msg\" value=\"{&quot;email&quot;:&quot;Email address invalid&quot;,&quot;phone&quot;:&quot;Phone number invalid&quot;,&quot;password&quot;:&quot;Password invalid&quot;,&quot;passwordmismatch&quot;:&quot;Password mismatch error&quot;,&quot;required&quot;:&quot;Required field missing&quot;}\">\n\t<div class=\"thrv_lead_generation_container tve_clearfix\"><form method=\"post\" action=\"#\" id=\"ktv2-form-200765\" novalidate=\"novalidate\" autocomplete=\"new-password\"><input type=\"hidden\" class=\"tve-f-a-hidden\" value=\"https:\/\/www.klick-tipp.com\/api\/subscriber\/signin.html\"><input id=\"apikey\" type=\"hidden\" name=\"apikey\" value=\"4nv5z2tonz8za09b\"><div class=\"tve_lead_generated_inputs_container\"><div class=\"tve_lg_input_container tve_lg_input\"><input name=\"fields[fieldFirstName]\" id=\"\" type=\"text\" placeholder=\"Name\" value=\"\" data-css=\"tve-u-1709bd3f99e\" data-placeholder=\"Name\"><\/div><div class=\"tve_lg_input_container tve_lg_input\"><input name=\"email\" id=\"\" type=\"text\" placeholder=\"E-Mail\" value=\"\" data-required=\"1\" data-validation=\"email\" data-css=\"tve-u-1709bd3f99e\" data-placeholder=\"E-Mail\"><\/div><div class=\"tve_lg_input_container tve_submit_container tve_lg_submit\" data-css=\"tve-u-180f6ae0258\"><button type=\"submit\" class=\"\">KLICKE HIER F\u00dcR ABO!<\/button><\/div><\/div><\/form><\/div>\n<div class=\"thrv_lead_generation_code\" style=\"display: none;\">__CONFIG_lead_generation_code__<div id=\"form-200765-wrapper\"><form id=\"ktv2-form-200765\" accept-charset=\"UTF-8\" method=\"post\" action=\"https:\/\/www.klick-tipp.com\/api\/subscriber\/signin.html\" autocomplete=\"new-password\"><input type=\"hidden\" name=\"apikey\" value=\"4nv5z2tonz8za09b\"><input type=\"text\" name=\"fields[fieldFirstName]\"><input type=\"text\" name=\"email\"><\/form><\/div>__CONFIG_lead_generation_code__<\/div><\/div><\/div>\n<\/div>","tve_custom_css":"@import url(\"\/\/fonts.googleapis.com\/css?family=Open+Sans:400,600&subset=latin\");@media (min-width: 300px){[data-css=\"tve-u-180f6ade4e8\"] { background-color: var(--tcb-color-3); }:not(#tve) [data-css=\"tve-u-180f6ae024f\"] { font-size: 25px !important; font-weight: var(--g-bold-weight,bold) !important; padding-bottom: 0px !important; margin-bottom: 0px !important; padding-top: 0px !important; margin-top: 0px !important; color: rgb(70, 70, 70) !important; --tcb-applied-color:var$(--tcb-color-1) !important; }[data-css=\"tve-u-180f6ae0250\"] { padding: 10px !important; }[data-css=\"tve-u-180f6ae0251\"] { margin-left: 0px !important; margin-right: 0px !important; padding-right: 30px !important; padding-left: 30px !important; }[data-css=\"tve-u-180f6ae0252\"] { margin-right: 0px !important; margin-left: 0px !important; }[data-css=\"tve-u-180f6ae0253\"] { border-radius: 30px; overflow: hidden; background-image: linear-gradient(rgba(0, 0, 0, 0.08), rgba(0, 0, 0, 0.08)) !important; background-size: auto !important; background-position: 50% 50% !important; background-attachment: scroll !important; background-repeat: no-repeat !important; }[data-css=\"tve-u-180f6ae0255\"] .tve_sep { border-width: 3px !important; border-color: rgb(70, 70, 70) !important; }[data-css=\"tve-u-180f6ae0255\"] { padding-top: 0px !important; }:not(#tve) [data-css=\"tve-u-180f6ae0256\"] { color: rgb(70, 70, 70) !important; --tcb-applied-color:var$(--tcb-color-1) !important; padding-bottom: 0px !important; margin-bottom: 0px !important; font-size: 18px !important; }[data-css=\"tve-u-180f6ae0257\"] { float: none; border: none; max-width: 500px !important; margin-left: auto !important; margin-right: auto !important; }:not(#tve) [data-css=\"tve-u-180f6ae0258\"] button { border-bottom: 4px solid rgb(33, 72, 112); border-radius: 4px; border-top: none; border-right: none; border-left: none; font-weight: var(--tve-font-weight,var(--g-bold-weight,bold)); font-family: var(--tve-font-family,\"Open Sans\"); font-size: var(--tve-font-size,18px); text-transform: var(--tve-text-transform,uppercase); background-image: none !important; background-color: rgb(51, 103, 153) !important; }:not(#tve) [data-css=\"tve-u-180f6ae0258\"]:hover button { background-image: none !important; background-color: rgb(41, 84, 127) !important; border-color: rgb(229, 227, 227) rgb(229, 227, 227) rgb(24, 54, 86) !important; }[data-css=\"tve-u-180f6ae0258\"] { --tve-font-weight:var(--g-bold-weight,bold); --tve-font-family:\"Open Sans\"; --g-regular-weight:400; --g-bold-weight:600; --tve-font-size:18px; --tve-text-transform:uppercase; }[data-css=\"tve-u-180fb987b37\"] { background-image: linear-gradient(rgba(0, 0, 0, 0.13), rgba(0, 0, 0, 0.13)) !important; background-size: auto !important; background-position: 50% 50% !important; background-attachment: scroll !important; background-repeat: no-repeat !important; margin-bottom: 0px !important; padding: 5px 10px !important; }:not(#tve) [data-css=\"tve-u-180fb987b38\"] { padding-bottom: 0px !important; margin-bottom: 0px !important; font-family: \"Courier New\", Courier, monospace !important; font-weight: var(--g-regular-weight,normal)  !important; }:not(#tve) [data-css=\"tve-u-18128af24b2\"] { border: 1px solid rgb(220, 227, 233); }:not(#tve) [data-css=\"tve-u-18128af24b3\"] > .tve_table > thead > tr > th { background-color: var(--tcb-color-3); }:not(#tve) [data-css=\"tve-u-18128af24b3\"] > .tve_table > tbody > tr:nth-child(2n) > td { background-color: rgb(246, 246, 246); }:not(#tve) [data-css=\"tve-u-18128af24b3\"] > .tve_table > tbody > tr:nth-child(2n+1) > td { background-color: rgb(255, 255, 255); }:not(#tve) [data-css=\"tve-u-18128af24b4\"] p, :not(#tve) [data-css=\"tve-u-18128af24b4\"] li, :not(#tve) [data-css=\"tve-u-18128af24b4\"] blockquote, :not(#tve) [data-css=\"tve-u-18128af24b4\"] address, :not(#tve) [data-css=\"tve-u-18128af24b4\"] .tcb-plain-text, :not(#tve) [data-css=\"tve-u-18128af24b4\"] label, :not(#tve) [data-css=\"tve-u-18128af24b4\"] h1, :not(#tve) [data-css=\"tve-u-18128af24b4\"] h2, :not(#tve) [data-css=\"tve-u-18128af24b4\"] h3, :not(#tve) [data-css=\"tve-u-18128af24b4\"] h4, :not(#tve) [data-css=\"tve-u-18128af24b4\"] h5, :not(#tve) [data-css=\"tve-u-18128af24b4\"] h6 { color: rgb(255, 255, 255); }:not(#tve) [data-css=\"tve-u-18128af24b9\"] p, :not(#tve) [data-css=\"tve-u-18128af24b9\"] li, :not(#tve) [data-css=\"tve-u-18128af24b9\"] blockquote, :not(#tve) [data-css=\"tve-u-18128af24b9\"] address, :not(#tve) [data-css=\"tve-u-18128af24b9\"] .tcb-plain-text, :not(#tve) [data-css=\"tve-u-18128af24b9\"] label, :not(#tve) [data-css=\"tve-u-18128af24b9\"] h1, :not(#tve) [data-css=\"tve-u-18128af24b9\"] h2, :not(#tve) [data-css=\"tve-u-18128af24b9\"] h3, :not(#tve) [data-css=\"tve-u-18128af24b9\"] h4, :not(#tve) [data-css=\"tve-u-18128af24b9\"] h5, :not(#tve) [data-css=\"tve-u-18128af24b9\"] h6 { color: rgb(84, 85, 88); }[data-css=\"tve-u-18128af24b3\"] .tve_table td, [data-css=\"tve-u-18128af24b3\"] .tve_table th { padding: 0px; text-align: center; vertical-align: middle; }:not(#tve) [data-css=\"tve-u-18128af24be\"] { font-size: 16px !important; font-family: \"Open Sans\" !important; font-weight: 400 !important; }[data-css=\"tve-u-18128af24be\"] strong { font-weight: 600 !important; }:not(#tve) [data-css=\"tve-u-18128af24b2\"] > tbody > tr > td { border: 0px none rgb(220, 227, 233); }:not(#tve) [data-css=\"tve-u-18128af24b2\"] > thead > tr > th { border: 1px solid var(--tcb-color-3); }:not(#tve) [data-css=\"tve-u-18128af24bf\"] { width: 97px; }:not(#tve) [data-css=\"tve-u-18128af24c0\"] { font-size: 16px !important; }}@media (max-width: 767px){.tcb-mobile-table [data-css=\"tve-u-18128af24c4\"]::before { background-color: rgb(51, 103, 153); border-right: 1px solid rgb(51, 103, 153); padding: 0px; text-align: center; font-size: 16px; line-height: 32px; color: rgb(255, 255, 255); font-weight: 400; font-family: \"Open Sans\"; }.tcb-mobile-table [data-css=\"tve-u-18128af24c5\"]::before { background-color: rgb(51, 103, 153); border-right: 1px solid rgb(51, 103, 153); padding: 0px; text-align: center; font-size: 16px; line-height: 32px; color: rgb(255, 255, 255); font-weight: 400; font-family: \"Open Sans\"; }.tcb-mobile-table [data-css=\"tve-u-18128af24c6\"]::before { background-color: rgb(51, 103, 153); border-right: 1px solid rgb(51, 103, 153); padding: 0px; text-align: center; font-size: 16px; line-height: 32px; color: rgb(255, 255, 255); font-weight: 400; font-family: \"Open Sans\"; }.tcb-mobile-table [data-css=\"tve-u-18128af24c7\"]::before { background-color: rgb(51, 103, 153); border-right: 1px solid rgb(51, 103, 153); padding: 0px; text-align: center; font-size: 16px; line-height: 32px; color: rgb(255, 255, 255); font-weight: 700; font-family: \"Open Sans\", sans-serif; }.tcb-mobile-table [data-css=\"tve-u-18128af24c8\"]::before { background-color: rgb(51, 103, 153); border-right: 1px solid rgb(51, 103, 153); padding: 0px; text-align: center; font-size: 16px; line-height: 32px; color: rgb(255, 255, 255); font-weight: 700; font-family: \"Open Sans\", sans-serif; }.tcb-mobile-table [data-css=\"tve-u-18128af24c9\"]::before { background-color: rgb(51, 103, 153); border-right: 1px solid rgb(51, 103, 153); padding: 0px; text-align: center; font-size: 16px; line-height: 32px; color: rgb(255, 255, 255); font-weight: 700; font-family: \"Open Sans\", sans-serif; }}","tve_user_custom_css":"","tve_globals":{"e":"1","font_cls":[]},"tcb2_ready":1,"tcb_editor_enabled":1,"tve_landing_page":"","_tve_header":"0","_tve_footer":"0"},"categories":[8],"tags":[],"class_list":["post-13968","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administration"],"_links":{"self":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/13968","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/comments?post=13968"}],"version-history":[{"count":50,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/13968\/revisions"}],"predecessor-version":[{"id":14045,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/13968\/revisions\/14045"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/media\/13971"}],"wp:attachment":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/media?parent=13968"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/categories?post=13968"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/tags?post=13968"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}