MAC Eclipse make: *** Error 1 und symbol(s) not found for architecture
-
Hallo Forum!
Ich bekomme 2 Errors gemeldet, wenn ich versuche meinen C-Code auszuführen.
make: *** [name_projekt] Error 1
symbol(s) not found for architecture x86_64Beim recherchieren über diese Fehler habe ich vieles gefunden und auch ausprobiert, aber nichts davon hat mich weitergebracht. Wenn ich im Terminal gcc -v eingebe, findet er den Compiler. Ein anderer im Netz hatte das Problem, dass er keine main-Function deklariert hatte, aber das habe ich.
"Project -> Build all" hat nichts genutzt, Clean und Refresh ebenfalls.Wenn ich auf den Run-Button drücke, bekomme ich:
"Launch failed. binary not found."Der Consolenoutput nach drücken auf den Hammer-Button ist:
**** Build of configuration Debug for project name_projekt **** make all Building file: ../main.c Invoking: Cross GCC Compiler gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.c" Finished building: ../main.c Building target: name_projekt Invoking: Cross GCC Linker gcc -o "name_projekt" ./main.o Undefined symbols for architecture x86_64: "_stdscr", referenced from: _eldonu_menuon in main.o _main in main.o "_wgetch", referenced from: _eldonu_menuon in main.o _main in main.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status make: *** [name_projekt] Error 1 **** Build Finished ****Und hier ist mein Quellcode:
#include <stdio.h> #include <stdlib.h> //Windows: #include <conio.h> //Unix Kernel: #include <ncurses.h> void eldonu_menuon(int limo1, char teksto[], int limo2, int indiko) { int numero; int numero2; char enen; for(numero=0; numero<limo1; numero++) {printf("-----------------------------------------------\n");} //printf(teksto); printf("\n"); for(numero2=0; numero2<limo2; numero2++) {printf("-----------------------------------------------\n");} printf("\n"); if (indiko==1) {printf("-Premu 'ENTER' por plue..."); enen=getch(); } } int main(int argc, char *argv[]) { char enen; system("color 2A"); eldonu_menuon(1,"mi prezentas",1,1); system("Cls"); eldonu_menuon(1,"Ludon de 'KOMPUTILA Ludoj'",1,1); system("Cls"); printf("\a"); eldonu_menuon(2,"VOJO DE VAMPIRO",2,1); system("Cls"); eldonu_menuon(1,"MENUO",1,0); printf("-Premu '1' por novan ludon\n"); printf("-Premu '2' por pluigi ludon\n"); enen=getch(); system("PAUSE"); return 0; }Kann mir jemand erklären, was ich falsch mache? Das Projekt habe ich auf einem Windows gebaut und da lief es. Ich möchte aber jetzt auf einem Mac weiterprogrammieren und bin leider noch nicht so mit der Materie vertraut...
-
Du musst die ncurses-Bibliothek mitlinken.
gcc main.o -lncurses
-
Wo ist denn der Unterschied zwischen Windows und Mac Version?
Zeile 3 und 4Und es steht auch da: er kann stdscr und wgetch für das 64bit-System nicht finden.
ncurses.h nicht includieren oder passende Version nehmen.
-
hm okay, das hat das erste problem gelöst. Ich habe unter Projekt->Properties->C7C++ Build->Settings->Cross GCC Compiler das command (vorher nur gcc) durch (gcc main.o -lncurses) ausgetauscht.
Der eine Fehler ist jetzt weg. Nur der Error 1 ist immernoch da und bei "RUN" krieg ich immernoch "Launch failed. Binary not found"...
@dirkB:
Nun laut dem Netz ist die Funktion getch() in Windows in der conio.h Bibliothek, die gibt's aber in Mac nicht. Für Mac gibt's dafür ncurses.Das Problem mit ncurses hab ich jetzt dann SeppJ Auch gelöst, nur make: *** [projekt_name] Error 1 bleibt noch.
-
Für Probleme mit IDE gibt es hier ein passendes Subforum. Das ist kein C Problem.
-
Gut, dann erbitte ich, den Threat in das IDE-Subforum zu verschieben und hoffe trotzdem auf eine Hilfestellung

-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Das wird ja wohl etwas mehr sagen als nur "Error 1".
-
Nein, wie oben schon beschrieben sieht die Consolenmeldung so aus:
**** Build of configuration Release for project vojo_de_vampiro **** make all i686-apple-darwin11-llvm-gcc-4.2: main.o: No such file or directory Building file: ../main.c Invoking: Cross GCC Compiler gcc main.o -lncurses -O3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.c" make: *** [main.o] Error 1 **** Build Finished ****
-
gcc [b]main.o[/b] -lncurses -O3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" [b]-o "main.o"[/b] "../main.c"Was ist das denn für ein Blödsinnskommando? Hast du da selber am Makefile rumgefuscht oder die Buildoptionen total verstellt?
-
Nun ich bin wie oben beschrieben vorgegangen, um den einen Fehler wegzumachen.
Ich habe das doppelte main.o rausgenommen, jetzt habe ich aber beide Fehler wieder...
Wie gesagt ich habe da nicht rumgefuscht, sondern nur wie SeppJ beschrieben hat versucht, die Fehler zu beheben.
Jetzt habe ich also unter Projekt->Properties->C7C++ Build->Settings->Cross GCC Compiler das command auf "gcc -lncurses" gestellt, aber jetzt kriege ich wieder beide Fehler.
Ansonsten habe ich nichts geändert.
-
Autsch! Da hast du mich total falsch verstanden. Ich dachte du würdest verstehen, was die Kommandos bedeuten und wie du deine IDE benutzt und dass dir daher der kleine, stark verkürzte Hinweis, wie es lauten müsste, ausreicht. Aber anscheinend ist beides nicht der Fall. Da ich Eclipse IDE nicht kenne, kann ich dir keine Schritt für Schritt Anleitung geben. Und die gcc Kommandozeile kann ich auch nicht mal eben erklären. Ich kann nur sagen, dass ich das total anders gemeint habe und du besser wieder alles rückgängig machst, was du nach meinem Beitrag gesagt habe, bis jemand kommt, der dir eine Schritt-für-Schritt-Erklärung geben kann.
-
Achso... Okay. Ja ich habe halt versucht da eigenständig was zu versuchen, ist ja nicht so dass ihr hier meine Arbeit machen müsst. Ich will ja schon selber verstehen was ich falsch gemacht habe und deshalb habe ich rumprobiert.
Und das hat wie gesagt zeitweise einen Fehler ja auch ausgeschlossen... scheinbar ist es aber trotzdem nur kauderwelsch.
Ja wie gesagt, angefangen habe ich das Projekt auf Windows (und einem anderen Tool) und da war eben der Compiler schon eingerichtet und ich konnte sofort losproggen.
Jetzt habe ich hier eben den gcc Compiler und die XCode Developer Tools da installiert. Scheinbar muss aber noch irgendwas bei den Kompilierungseinstellungen geändert werden.
-
Make File? hmm, normalerweise nutzt Eclipse ein Internal Builder.
Die Libs werden gewöhnlicherweise unter
- Project Property (Rechts klick auf Project -> Properties)
- C/C++ Build -> Settings -> Tool Settings -> GCC Linker (evtl steht auch C++ oder C dabei) -> Library
- Libraries (-l) nur Libname eintragen, falls benötigt wird
- Library search path (-L) mitgeben.
eingetragen.
Kann sein, dass diese Option nicht angezeigt wird, weil es als Build ein Makefile benutzt.