2013-06-01 7 views
5

Ich habe ein einfaches Client-Server-Programm geschrieben, in dem Server Nachrichten von Clients akzeptiert und druckt ihre Details (hart für meine Aufgabe codiert). Ich hatte dies zuerst auf einer Linux (Fedora) Maschine geschrieben, und es funktionierte einwandfrei. Aber wenn ich versuche, den Server-Code auf meinem Mac zu kompilieren, funktioniert es nicht. HierClient-Server-Programm in C

ist die Botschaft, nach der Kompilierung:

Undefined symbols for architecture x86_64: 
    "_error", referenced from: 
     _main in cc3O1167.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 

Kann jemand mir helfen mit dieser aus?

+0

Wirklich schwer, Ihnen mit diesem zu helfen, verwenden Sie wahrscheinlich eine andere Standard-C-Bibliothek, die das Problem des Symbols nicht existent verursacht. Ich würde vorschlagen, ld mit dem Flag -lc auszuführen. –

+0

Sie haben Kompatibilitätsprobleme. Ist dein Fedora 32bit? – ka2m

+0

Entfernen Sie das Programm auf das Minimum, um das Problem zu replizieren, und geben Sie den Code hier ein. Ich habe einen Mac, kann Ihnen aber ohne Code nicht helfen. –

Antwort

0

Ihre error Funktion ist wahrscheinlich in einer anderen Datei als die Hauptdatei, sind Sie seine Erklärung einschließlich, aber nicht seine Umsetzung:

versuchen, wie dies zu kompilieren:

g++ main.c -l<filetolink> 

filetolink ist der Name der Datei mit der Implementierung der error Funktion (ohne die Erweiterung)

Referenz: C - Undefined symbols for architecture x86_64 when compiling on Mac OSX Lion Scheint mehrere Lösungen zu haben t sein Problem, wenn die erste Fehlerzeile

3

dies an der Spitze der Hauptdatei Put googeln:

#ifdef __APPLE__ 
# define error printf 
#endif 
1

Von „Mann 3 Fehler“:

These functions and variables are GNU extensions, and should not be 
    used in programs intended to be portable. 

Also, diese Funktion nicht verwenden in Programmen, die auf Nicht-GNU-Systemen arbeiten müssen oder eigene Ersatzprogramme bereitstellen.