netcat.c kompilierung unter WIN32 ??
-
Hallo zusammen,
bin begeisterter Benutzer von netcat. Hatte nie Probleme damit es unter Linux / Unix mit gcc zu kompilieren, allerdings bereitet mir die Kompilierung unter Windows mit Borland C++ 5.02 oder Dev-C++ Kopfschmerzen. Der Compiler bringt Fehler über Fehler. Keine Ahnung wie oder mit was die Leute von @stake das hinbekommen haben. Habe dem Quellcode die Zeile #define WIN32 hinzugefügt was allerdings nichts brachte. Muß ich auf bestimmte Kompiler Einstellungen achten? Oder was mach ich falsch?
Hier die Adresse zum Netcat Quelltext:
www.atstake.com/research/tools/network_utilities/Bin für jeden Tip dankbar.
Gruß Sam
-
hi
habe netcat mal kompiliert vor längerer zeit.. zwar steht im makefile (in meinem stands jedenfalls noch):
### HARD TARGETS
nc: netcat.c
$(LD) $(DFLAGS) $(XFLAGS) $(STATIC) -o nc netcat.c $(XLIBS)nc-dos:
@echo "DOS?! Maybe someday, but not now"aber: du kannst den cygwin zum kompilieren nehmen, dann geht es..
du musst einige konstanten ummodeln, habe grad vergessen, welche, aber schau dann einfach unter linux, welche werte die haben, und setzte sie ein.
-
kleine blitzanleitung für netcat unter win (mit noch ein paar macken)
cygwin (cygnus) nutzen (geht nur mit dem)
wir tun so, als ob wir unter windows linux zu laufen haben.. nur daß der cygwin statt cc ... gcc sagt, also:
make linux
auf die konsole eintippen, aber erst nach folgenden änderungen:
1. makefile öffnen, zeile 17 statt cc -> gcc schreiben
CC = gcc $(CFLAGS)
2. es gibt ein paar konstanten in der ip.h, die der cygwin nicht fährt, hartcodieren also:
die netcat.c öffnen und oben drüber folgende zeilen:#define IPOPT_LSRR 131 #define IPOPT_NOP 1
3. es existiert kein h_error in der gewünschten form, wie unter linux, also in der netcat.c die zeile extern int h_error auskommentieren, und hoffen, daß es nicht zu größeren schäden kommt
(hier könnte mir ein linuxprofi noch einige hinweise geben, wie ich das h_errno am besten auffange)#ifdef HAVE_BIND
//extern int h_errno;
/* stolen almost wholesale from bsd herror.c */4. ... und dann noch res_init() auskommentieren
#ifdef HAVE_BIND /* can *you* say "cc -yaddayadda netcat.c -lresolv -l44bsd" on SunLOSs? */ //res_init(); #endif
es wird dann durchkompiliert. die netcat exe kann wie gewohnt benutzt werden, haben wir mal getestet im intra. ist länger her, die testversuche waren ziemlich wenig umfangreich, also ohne gewähr.
-
zweimal gedrückt, das geht hier aber schneller als im alten
-
Hi
erstmal danke für deine Hilfe bin schon ein gutes Stück weiter. Nur eins verstehe ich noch nicht. Ich habe netcat.c statisch gelinkt, das heißt doch dann das es ohne irgendwelche dlls auskommt oder? wenn ich nun versuche nc.exe unter cygwin zu starten funktionierts ohne probleme, allerdings mmeckert er unter windows wegen ein fehlenden cygwin1.dll weil er den Pfad nicht findet.
Gibt es demnach keine Möglichkeit die unter Cygwin statisch kompilierte exe uach auf anderen Rechnern auszuführen welche diese DLL garnicht besitzen?
Gruß Sam
-
Can I build a Cygwin program that does not require cygwin1.dll at runtime?
No. If your program uses the Cygwin API, then your executable cannot run without cygwin1.dll. In particular, it is not possible to statically link with a Cygwin library to obtain an independent, self-contained executable.If this is an issue because you intend to distribute your Cygwin application, then you had better read and understand http://cygwin.com/licensing.html, which explains the licensing options. Unless you purchase a special commercial license from Red Hat, then your Cygwin application must be Open Source.
-
ups peinlich...
danke für den Hinweis
-
sammy2ooo schrieb:
ups peinlich...
nüscht peinlich.. aber registier dich mal und sag, obs wirklich klappt mit den eingesetzten konstanten, unser probelauf war damals nur mal eben einen nachmittag im intranet ...
vielleicht versuch ich mal irgendwann, das teil auf win32 konsole für andere compiler umzudoktern..