Kann nicht auf externe Libraries zugreifen. (krb5.h, g++)
-
Hallo zusammen,
Ich bin neu und hab auch gleich ein konkretes Problem.
Aus User-Infos soll ich eine Anfrage bei einem Kerberos-System erstellen. Dazu würde ich die krb5-Libraries verwenden.
Der Source sieht wie folgt aus:
#include <iostream> // Wird gebraucht für Ausgabe auf Konsole. #include <string> // Führt den Datentyp string ein. #include "include/b64/decode.h" // Unser Base64-Decoder. #include "include/krb5/krb5.h" using namespace std; static const string comparestring = "YIIGUQY"; string Spnego_Extract(string input){ // 'input' auf Header "YIIGUQY" überprüfen string::size_type i = input.find(comparestring); if(i != 0){ cout << "E: Kein Identifier gefunden." << endl << flush; return ""; } // 'input' von Header "YIIGUQY" befreien. input.replace(0, 7, ""); return input; }; string Request_Credentials(string decoded){ krb5_context context; // Unser Context, der die Verbindung verwaltet. krb5_init_context(&context); // Hier soll weitere Verarbeitung folgen, wenn obiges funktioniert! return "string"; }; string B64_Decode(string extracted){ return extracted; } int main(int argc, char **argv) { // Prüfen, ob ein Parameter übergeben wurde. if(argc != 2){ cout << "E: Es muss ein Parameter übergeben werden." << endl << 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 << "E: Benutzer konnte nicht authentifiziert werden."; }else{ cout << credentials; } return 0; };Auf der Konsole motzt g++ dann wie folgt über das Objekt in Zeile 28:
g++ -Wall -I/mnt/src/include/ concept.cpp -o concept
/tmp/ccUSpiRo.o: In functionRequest\_Credentials(std::basic\_string<char, std::char_traits<char>, std::allocator<char> >)': concept.cpp:(.text+0x211): undefined reference tokrb5_init_context'
collect2: ld gab 1 als Ende-Status zurück
make: *** [concept] Fehler 1Was mach ich alles falsch?
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.
Bin für jeden Hinweis dankbar!
MfG, Sascha.
-
Du musst die Bibliothek dazulinken.
http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Link-Options.html#Link-Options-l*library*Grüssli