Software > Freeware

Sendmail und Milter

<< < (3/3)

Padde:
gcc ... -pthread wirft deswegen einen Fehler, weil es gcc ... -lpthread heißen müßte. Damit bindest du die POSIX-Threads-Bibliothek ein. Aber wahrscheinlich brauchst du die sowieso nicht, denn beim zweiten Aufruf hast du sie weggelassen und der GCC beschwert sich trotzdem nicht, daß irgendwelche Thread-Sachen fehlen würden.

Was du aber brauchst, sind die Bibliotheken, in denen das Netzwerkzeug drin ist. Also die ganzen Sachen, die in deinem letzten Post unter "Undefined symbol" aufgelistet sind. Ich kann im Moment nicht nachgucken, aber wenn ich mich recht erinnere, bekommst du die alle mittels -lnsl und/oder -lsocket.

EDIT: Mir fällt gerade noch auf, daß du hinter einigen deiner -I auch Verzeichnisse namens lib stehen hast. Das ist nicht sinnvoll, denn mit -I  sagst du dem GCC, wo er zusätzliche Header-Dateien finden kann. Diese befinden sich aber normalerweise in Verzeichnissen mit dem Namen include.

In lib dagegen liegen Bibliotheken, die man mit -l... einbinden kann. Um dem GCC jetzt noch zu sagen, wo er eine mittels -l... eingebundene Bibliothek finden kann, muß man -L benutzen.

Tja, alles nicht so einfach.  ;)

signal_15:
@Foren-Admin/Moderator
waren das nicht zwei verschiedene Freds? ich habe den ersten geschlossen nachdem der fehler, der nichts mit dem uebersetzen von quellen zu tun hatte, gefunden und geloest wurde. den zweiten fred habe ich geoeffnet da ich probleme beim uebersetzen habe und zum anderen es sich um ein anderes programm handelt. anyway, soll mir auch recht sein.

@Padde
werde ich gleich mal ausprobieren.

ct,

signal_15:
grrr, ich werd wohl nen c-kurs an der vhs belegen muessen. oder ich lass das meine tochter machen, da ich offensichtlich zu doof fuer das ganze bin.


--- Code: ---ismine/Download/milter/20080707/src# gcc -I/usr/include -I/opt/csw/include -o mail-dump.solaris mail-dump.c /opt/csw/lib/libmilter.a libsm.a -lpthread
Undefined                       first referenced
 symbol                             in file
socket                              /opt/csw/lib/libmilter.a(listener.o)
getipnodebyname                     /opt/csw/lib/libmilter.a(sm_gethost.o)
accept                              /opt/csw/lib/libmilter.a(listener.o)
in6addr_any                         /opt/csw/lib/libmilter.a(listener.o)
bind                                /opt/csw/lib/libmilter.a(listener.o)
setsockopt                          /opt/csw/lib/libmilter.a(listener.o)
h_errno                             /opt/csw/lib/libmilter.a(sm_gethost.o)
getservbyname                       /opt/csw/lib/libmilter.a(listener.o)
inet_aton                           /opt/csw/lib/libmilter.a(engine.o)
inet_pton                           /opt/csw/lib/libmilter.a(sm_gethost.o)
inet_addr                           /opt/csw/lib/libmilter.a(listener.o)
freehostent                         /opt/csw/lib/libmilter.a(listener.o)
listen                              /opt/csw/lib/libmilter.a(listener.o)
ld: fatal: Symbol referencing errors. No output written to mail-dump.solaris
collect2: ld returned 1 exit status

--- Ende Code ---

ct,

Padde:
Du hast immer noch nicht die Bibliotheken für den ganzen Netzwerkkrempel (d.h. socket(), getipnodebyname(), accept() usw.) eingebunden. Du mußt also immer noch -lnsl und -lsocket einbinden.

(Vorhin war ich mir ja noch nicht ganz sicher, aber ich habe gerade in einem meiner eigenen Makefiles nachgesehen und es handelt sich tatsächlich um -lnsl und -lsocket. Das kann ich mir nie behalten.)

signal_15:
@Padde
danke fuer die info. folgendes hat mich ans ziel gefuehrt:

--- Code: ---gcc -I/usr/include -I/opt/csw/include -o mail-dump.solaris mail-dump.c /opt/csw/lib/libmilter.a libsm.a -lpthread -lsocket -lnsl -lresolv

--- Ende Code ---

ct,

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln