<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Kann nicht auf externe Libraries zugreifen. (krb5.h, g++)]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Ich bin neu und hab auch gleich ein konkretes Problem.</p>
<p>Aus User-Infos soll ich eine Anfrage bei einem Kerberos-System erstellen. Dazu würde ich die krb5-Libraries verwenden.</p>
<p>Der Source sieht wie folgt aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; // Wird gebraucht für Ausgabe auf Konsole.
#include &lt;string&gt; // Führt den Datentyp string ein.
#include &quot;include/b64/decode.h&quot; // Unser Base64-Decoder.
#include &quot;include/krb5/krb5.h&quot;

using namespace std;

static const string comparestring = &quot;YIIGUQY&quot;;

string Spnego_Extract(string input){

	// 'input' auf Header &quot;YIIGUQY&quot; überprüfen
	string::size_type i = input.find(comparestring);	
	if(i != 0){
		cout &lt;&lt; &quot;E: Kein Identifier gefunden.&quot; &lt;&lt; endl &lt;&lt; flush;	
		return &quot;&quot;;
	}

	// 'input' von Header &quot;YIIGUQY&quot; befreien.
	input.replace(0, 7, &quot;&quot;);

	return input;
};

string Request_Credentials(string decoded){
	krb5_context context; // Unser Context, der die Verbindung verwaltet.

	krb5_init_context(&amp;context);

// Hier soll weitere Verarbeitung folgen, wenn obiges funktioniert!	

	return &quot;string&quot;;	
};

string B64_Decode(string extracted){
	return extracted;
}

int main(int argc, char **argv)
{
	// Prüfen, ob ein Parameter übergeben wurde.
    if(argc != 2){
	    cout &lt;&lt; &quot;E: Es muss ein Parameter übergeben werden.&quot; &lt;&lt; endl &lt;&lt; flush;
		return -1;
	}

	string input(argv[1]); // String input wird aus Array argv[1] befüllt.

	// 'input' zerlegen.
	string extracted = Spnego_Extract(input);

	// 'extracted' B64_Decodieren
	string decoded = B64_Decode(extracted);

	// 'decoded' an krb5 übergeben und Credentials auswerten
	string credentials = Request_Credentials(decoded);

	// Credentials in der Form userœdomain ausgeben, wenn alles okay war.
	if(credentials.empty())
	{
		cout &lt;&lt; &quot;E: Benutzer konnte nicht authentifiziert werden.&quot;;
	}else{
		cout &lt;&lt; credentials;
	}	

	return 0;
};
</code></pre>
<p>Auf der Konsole motzt g++ dann wie folgt über das Objekt in Zeile 28:</p>
<blockquote>
<p>g++ -Wall -I/mnt/src/include/ concept.cpp -o concept<br />
/tmp/ccUSpiRo.o: In function <code>Request\_Credentials(std::basic\_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;)': concept.cpp:(.text+0x211): undefined reference to</code>krb5_init_context'<br />
collect2: ld gab 1 als Ende-Status zurück<br />
make: *** [concept] Fehler 1</p>
</blockquote>
<p>Was mach ich alles falsch?</p>
<p>Muss dazu sagen, dass ich nach 10 Jahren wieder in C++ einsteige und mich daher vorallem nicht gut mit dem Compiler auskenne, Entwickle sonst in Java, da ist der kompiler mir vertrauter. Vermutlich habe ich nur eine Kleinigkeit verhunzt.</p>
<p>Bin für jeden Hinweis dankbar!</p>
<p>MfG, Sascha.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/260392/kann-nicht-auf-externe-libraries-zugreifen-krb5-h-g</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 06:25:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/260392.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Feb 2010 15:07:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kann nicht auf externe Libraries zugreifen. (krb5.h, g++) on Thu, 04 Feb 2010 15:07:31 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Ich bin neu und hab auch gleich ein konkretes Problem.</p>
<p>Aus User-Infos soll ich eine Anfrage bei einem Kerberos-System erstellen. Dazu würde ich die krb5-Libraries verwenden.</p>
<p>Der Source sieht wie folgt aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; // Wird gebraucht für Ausgabe auf Konsole.
#include &lt;string&gt; // Führt den Datentyp string ein.
#include &quot;include/b64/decode.h&quot; // Unser Base64-Decoder.
#include &quot;include/krb5/krb5.h&quot;

using namespace std;

static const string comparestring = &quot;YIIGUQY&quot;;

string Spnego_Extract(string input){

	// 'input' auf Header &quot;YIIGUQY&quot; überprüfen
	string::size_type i = input.find(comparestring);	
	if(i != 0){
		cout &lt;&lt; &quot;E: Kein Identifier gefunden.&quot; &lt;&lt; endl &lt;&lt; flush;	
		return &quot;&quot;;
	}

	// 'input' von Header &quot;YIIGUQY&quot; befreien.
	input.replace(0, 7, &quot;&quot;);

	return input;
};

string Request_Credentials(string decoded){
	krb5_context context; // Unser Context, der die Verbindung verwaltet.

	krb5_init_context(&amp;context);

// Hier soll weitere Verarbeitung folgen, wenn obiges funktioniert!	

	return &quot;string&quot;;	
};

string B64_Decode(string extracted){
	return extracted;
}

int main(int argc, char **argv)
{
	// Prüfen, ob ein Parameter übergeben wurde.
    if(argc != 2){
	    cout &lt;&lt; &quot;E: Es muss ein Parameter übergeben werden.&quot; &lt;&lt; endl &lt;&lt; flush;
		return -1;
	}

	string input(argv[1]); // String input wird aus Array argv[1] befüllt.

	// 'input' zerlegen.
	string extracted = Spnego_Extract(input);

	// 'extracted' B64_Decodieren
	string decoded = B64_Decode(extracted);

	// 'decoded' an krb5 übergeben und Credentials auswerten
	string credentials = Request_Credentials(decoded);

	// Credentials in der Form userœdomain ausgeben, wenn alles okay war.
	if(credentials.empty())
	{
		cout &lt;&lt; &quot;E: Benutzer konnte nicht authentifiziert werden.&quot;;
	}else{
		cout &lt;&lt; credentials;
	}	

	return 0;
};
</code></pre>
<p>Auf der Konsole motzt g++ dann wie folgt über das Objekt in Zeile 28:</p>
<blockquote>
<p>g++ -Wall -I/mnt/src/include/ concept.cpp -o concept<br />
/tmp/ccUSpiRo.o: In function <code>Request\_Credentials(std::basic\_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;)': concept.cpp:(.text+0x211): undefined reference to</code>krb5_init_context'<br />
collect2: ld gab 1 als Ende-Status zurück<br />
make: *** [concept] Fehler 1</p>
</blockquote>
<p>Was mach ich alles falsch?</p>
<p>Muss dazu sagen, dass ich nach 10 Jahren wieder in C++ einsteige und mich daher vorallem nicht gut mit dem Compiler auskenne, Entwickle sonst in Java, da ist der kompiler mir vertrauter. Vermutlich habe ich nur eine Kleinigkeit verhunzt.</p>
<p>Bin für jeden Hinweis dankbar!</p>
<p>MfG, Sascha.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1850494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1850494</guid><dc:creator><![CDATA[h0uz3]]></dc:creator><pubDate>Thu, 04 Feb 2010 15:07:31 GMT</pubDate></item><item><title><![CDATA[Reply to Kann nicht auf externe Libraries zugreifen. (krb5.h, g++) on Thu, 04 Feb 2010 15:10:42 GMT]]></title><description><![CDATA[<p>Du musst die Bibliothek dazulinken.<br />
<a href="http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Link-Options.html#Link-Options" rel="nofollow">http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Link-Options.html#Link-Options</a></p>
<p><code>-l</code> * <code>library</code> *</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1850496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1850496</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 04 Feb 2010 15:10:42 GMT</pubDate></item></channel></rss>