[Problem 3.4] macOS: Wie muss ich die Flags(?) ändern?

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

[Problem 3.4] macOS: Wie muss ich die Flags(?) ändern?
Hallo,

weiß jemand von euch wie man die Flags anpassen muss, so dass das Programm unter macOS (Sierra) läuft?
Ich habe schon jegliche Tipps von stackoverflow ausprobiert - leider ohne Erfolg.
Meine Versionen: LLVM version: 8.0.0 (clang-800.0.42.1)

So sieht die Makefile momentan aus:

CPPFLAGS=-g -O3 -std=c++11
LDFLAGS=-g

test: main.o GameArea.o
        g++ $(LDFLAGS) -o main main.o GameArea.o $(LIBS) 

%.o: %.cpp
        g++ $(CPPFLAGS) -c $< 

Kann jemand helfen?


Was für eine Fehlermeldung bekommst du denn? Wenn es beim compilen scheitert, dann pack mal die Image-Klasse noch mit rein.

2 „Gefällt mir“

Es kommen dutzend solcher Meldungen:

Undefined symbols for architecture x86_64:
  "Image::readFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      GameArea::loadGameArea(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in GameArea.o

Und dann abschließend diese:

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [test] Error 1

Das ist ohne Image-Klassen. Ich pack diese jetzt mal rein.


Ich packe da ja einfach nur mein “Image.cpp” rein, richtig? Sollte also wie folgend aussehen:

CPPFLAGS=-g -O3 -std=c++11
LDFLAGS=-g

test: main.o GameArea.o
        g++ $(LDFLAGS) -o main Image.cpp main.o GameArea.o  $(LIBS)

%.o: %.cpp
        g++ $(CPPFLAGS) -c $<

Wenn ich das sichere und make im Terminal ausführe, bekomme ich zuerst eine Warning:

./Image.h:63:23: warning: in-class initialization of non-static data member is a
      C++11 extension [-Wc++11-extensions]
        Pixel* imgData=nullptr;
                      ^
1 warning generated.

Wenn ich nun ./main aufrufe, kommt folgendes:

Wrong parameter count. Usage: binaryfile imagefile.bmp
Segmentation fault: 11

Übersehe ich etwas oder ist dieser Output gewollt?


Jupp, jetzt übersiehst du definitiv etwas :-p
Spaß beseite, passt. Nur noch mit den richtigen Parametern aufrufen.

1 „Gefällt mir“

Ja, klar.
Du weißt nicht, wie dankbar ich dir gerade bin!


Wunderbar, dass das Problem gelöst ist. :slight_smile:
Das Problem wäre auch tatsächlich nicht aufgetreten, wenn ich nicht am Montag eine Version mit fehlerhafter Makefile hochgeladen hätte, die ich am Dienstag Morgen aber direkt korrigiert hatte. Ich hatte gedacht/gehofft, dass keiner mit dieser ersten Version arbeiten wird und wenn, dann weit vor Sonntag, damit mehr als genug Zeit ist die Probleme zu finden.

Glücklicherweise wurde dir ja direkt geholfen, danke dafür. :slight_smile:
Aber für die Zukunft: Am besten immer die aktuellste Version von StudOn runterladen (vielleicht versionier ich die auch in Zukunft durch für all diejenigen, die praktisch nie im Forum sind).


Vielleicht wollt ihr eure Angaben im https://gitlab.cs.fau.de/ bereitstellen, dann ist die Versionierung einfach und man braucht nicht das grottenlahme Studon benutzen?

4 „Gefällt mir“

Klingt gut :smiley:
Mal sehen, ob sich das lohnt.