Erfahrungsbericht mit dem UnrealIRCd Support und HowTo zur Kompilierung unter Windows
Erstellt von Flo am Sonntag 10. Januar 2010
Ich habe mir mit Rhodan zusammen überlegt, mal einen Erfahrungsbericht von mir zu veröffentlichen. Ich hoffe, dass euch diese neue Art von Beitrag interessiert.
Das Vorhaben
An einem kalten Sonntagabend beschloss ich den Support des UnrealIRCd Projekts zu testen. Das UnrealIRCd Projekt entwickelt seit vielen Jahren einen IRC Server, welcher auf einfache Benutzbarkeit optimiert wurde.
Obwohl die meisten Benutzer IRCD Server unter auf UNIX basierten Betriebssysteme betreiben, gibt es Ausnahmen, welche diese mit Betriebssystemen der Firma Microsoft betreiben wollen.
Nachdem ich von der Entwicklung der neuen UnrealIRCd Version erfahren habe, beschloss ich zum direkten Vergleich den UnrealIRCd Server in der Version 3.2.8.1 mit dem Microsoft C++ Compiler zu kompilieren.
Wie kompiliert man den UnrealIRCd mit dem Microsoft C++ Compiler
Hierzu öffnet man die Microsoft Visual Studio Konsole mit der Verknüpfung, welche unter “Start => Programme => Microsoft Visual Studio 2008 => Visual Studio Tools” zu finden ist und “Visual Studio 2008-Eingabeaufforderung” heisst.
Anschließend navigiert man in den “Haupt” Ordner des Quellcodes. In diesem befindet sich die Datei “makefile.win32”.
Nun startet man mit dem Befehl “nmake -f makefile.win32” den Kompilierungsprozess.
Hierbei tritt folgender Befehl auf:
wircd.def : error LNK2001: unresolved external symbol add_remote_include wircd.def : error LNK2001: unresolved external symbol add_send_mode_param wircd.def : error LNK2001: unresolved external symbol badwords_stats wircd.def : error LNK2001: unresolved external symbol ban_version wircd.def : error LNK2001: unresolved external symbol fast_badword_match wircd.def : error LNK2001: unresolved external symbol fast_badword_replace wircd.def : error LNK2001: unresolved external symbol find_loaded_remote_include wircd.def : error LNK2001: unresolved external symbol find_remote_include wircd.def : error LNK2001: unresolved external symbol m_names wircd.def : error LNK2001: unresolved external symbol myargv wircd.def : error LNK2001: unresolved external symbol mystpcpy wircd.def : error LNK2001: unresolved external symbol our_strcasestr wircd.def : error LNK2001: unresolved external symbol remote_include wircd.def : error LNK2001: unresolved external symbol send_channel_modes wircd.def : error LNK2001: unresolved external symbol send_channel_modes_sjoin wircd.def : error LNK2001: unresolved external symbol send_channel_modes_sjoin3 wircd.def : error LNK2001: unresolved external symbol snprintf wircd.def : error LNK2001: unresolved external symbol stripbadwords wircd.def : error LNK2001: unresolved external symbol w_whois wircd.def : error LNK2001: unresolved external symbol webtv_cmds wircd.def : error LNK2001: unresolved external symbol webtv_parse wircd.lib : fatal error LNK1120: 21 unresolved externals NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN \link.EXE"' : return code '0x460' Stop.
Der Support
Ich war der Meinung, dass dies ein Fehler der Entwickler war und begab mich in das offizielle Support IRC Netzwerk von UnrealIRCd, welches die Adresse “irc.UnrealIRCd.com” hat. Da ich der Meinung war, dass es kein “Benutzerfehler” war, begab ich mich in den Channel “#unreal-devel” um die Entwickler über diesen Fehler zu informieren.
Dort traf ich auf Stealth, welcher mich mit einem Channel Ban darauf hinwies, dass ich im falschen Channel bin und doch bitte die FAQ lesen solle.
Dort findet man unter dem Artikel “Compiling – Windows: unresolved external symbol ..” einen fehlerhaften Auszug aus dem Kompilierungsprozess, wessen Fehler aber nicht mit meinen übereinstimmt. Dort wurde mit einem fehlerhaften Link auf eine Anwendung “dlltool.exe” verwiesen. Nach erfolgreichem googlen fand ich dieses Programm unter der Adresse http://www.vulnscan.org/tmp/dlltool.exe.
In der FAQ stand folgende Instruktion:
nmake -f makefile.win32 [your other options here] nmake -f makefile.win32 SYMBOLFILE nmake -f makefile.win32 [your other options here] So basically you just run nmake -f makefile.win32 SYMBOLFILE and then restart compiling again.
Auf Grund langjähriger Erfahrungen mit OpenSource Software war ich der Meinung, dass “SYMBOLFILE” ein Platzhalter sein müsse, welchen ich durch die fehlerhafte Objektdatei ersetzen muss. Allerdings bekam ich nur einen Hinweis, dass die Objektdatei existiert.
Als ich in “#UnrealIRCd” bezüglich diesen Fehlern nachfragte, wies mich der Benutzer “commx” darauf hin, dass ich doch bitte in “#UnrealIRCd-support” fragen möchte. Stealth bannte mich darauf hin auch im “#UnrealIRCd” Channel.
Direkt als ich den “#UnrealIRCd-support” Channel betrat, wurde ich schon wieder gebanned mit der Begründung, dass meine Anwesenheit nicht erwünscht ist und ich nicht in der Lage bin einfache Instruktionen durchzuführen.
Die Lösung
Nun habe ich aus purem Sarkasmus den Befehl so ausgeführt, wie er dort stand:
nmake -f makefile.win32 SYMBOLFILE
und es funktionierte.
Fazit
Die Freundlichkeit des Supports lässt zu wünschen übrig. Man hätte den Fehler suchen können anstatt den Benutzer aus diversen Channels zu bannen. Vielleicht war mein Problem auch nur der offizielle Grund. Ich habe den Nicknamen “irc1” verwendet, welcher nicht wirklich einfallsreich war.
Ein OpenSource Projekt sollte vor der STABLE Freigabe unter Windows kompiliert werden und auf eventuell auftretende Fehler untersucht werden. Hätte das UnrealIRCd Projekt dies getan, wäre mein Fehler nicht aufgetreten.
Dienstag 12. Januar 2010 um 07:13
Hallo,
du hast schon recht wenn du sagst dass der Support zu wünschen übrig lässt. Das Problem ist einfach dass es (momentan) strikte Regeln gibt, um Support zu erhalten. Jeder Benutzer der Support möchte, muss ein Quiz lösen. Fällt er da durch – wird er gebannt. Der Grund für all das ist einfach nur dass wir (ich bin erst seit wenigen Wochen dabei!) teilweise Nutzer haben, die sich mit Computern, geschweige denn wie man Server aufsetzt/benutzt, kein Stück auskennen. Einen IRC-Server zu betreiben erfordert eine Reihe von Kenntnissen, die die wenigsten mitbringen. Wenn wir jemandem erst mal erklären müssen, wie man einen Compiler installiert, dann schießt dass doch schon sehr über das Ziel hinaus.
Dennoch werde ich mich persönlich dafür einsetzen, dass der Support verbessert wird. Spätestens mit dem Launch der sich in Entwicklung befindlichen UnrealIRCd 4 wird sich einiges ändern. Es soll zwar jedem die Möglichkeit gegeben werden, einen IRC-Server zu betreiben, jedoch müssen wir die Nutzer genügend über Risiken und Erwartungen aufklären. Rom wurde ja auch nicht in einer Woche erbaut. 🙂
LG
Dienstag 12. Januar 2010 um 18:04
Vielen Dank für die Stellungsnahme seitens dem UnrealIRCd Projekt. Ich sehe ein, dass ich anfangs den falschen Channel gejoint bin, finde aber das “Ban” Prinzip nicht wirklich passend. Wie wäre es mit einem System, welches Benutzern, die die Fragen richtig beantwortet haben, in einem muted Channel das +v Recht gibt?