2009-12-22 2 views
0

У меня есть mac, и я пытаюсь скомпилировать мои проекты. Стандарт на wiki: g ++ sdl.cpp -lSDLmain -lSDL -framework Cocoa, похоже, не работает, он возвращает, что он не может найти -lSDL и -lSDLmain. Любая помощь будет принята с благодарностью.Компиляция SDL-игр на Mac

ответ

0

Вы понимаете значение флагов? Линкер ищет библиотеки SDL и SDLmain, они настроены на вашем компьютере?

+0

Они были, и это было совсем не так, как я ожидал, решение: gcc -I/Library/Frameworks/SDL.framework/Headers -I/System/Library/Frameworks/OpenGL.framework/Headers MyProgram.c SDLmain.m -framework SDL -framework Какао-каркас OpenGL – dejai

0

Для меня решение выглядит следующим образом:

g++ -c -I/Library/Frameworks/SDL.framework/Headers -I. -I.. -I/Library/Frameworks/SDL_image.framework/Headers -I/Library/Frameworks/SDL_mixer.framework/Headers -I/Library/Frameworks/SDL_ttf.framework/Headers -I/Library/Frameworks/SDL_net.framework/Headers -I/usr/local/include/SDL -I/usr/local/include/ ./lesson20.cpp -o ./lesson20.o 

Теперь, когда объектный файл был создан, мы можем использовать это решение:

g++ -L/usr/local/lib -I/Library/Frameworks/SDL.framework/Headers -I. -I.. -I/Library/Frameworks/SDL_image.framework/Headers -lSDLmain -I/Library/Frameworks/SDL_mixer.framework/Headers -I/Library/Frameworks/SDL_ttf.framework/Headers -I/Library/Frameworks/SDL_net.framework/Headers -framework SDL -framework SDL_image -framework Cocoa -framework SDL_mixer -framework SDL_ttf -framework SDL_net -framework OpenGL lesson20.o -o Lesson 

Это решение предполагает, что у вас есть SDL_image, SDL_mixer, SDL_ttf и SDL_net, установленных в каталоге «/ Library/Frameworks /».

Поскольку это трудно сделать вручную, и решение немного беспорядочно, лучше просто написать сценарий, чтобы сделать все это для вас.

Флаг '-I' (столица i) сообщает компилятору, где искать заголовки. Флаг '-L' сообщает компилятору, где искать библиотеки. Флаг '-l' (нижний регистр L) сообщает компилятору, какие библиотеки использовать. Флаг '-framework' в основном ведет себя как флаг '-l' (нижний регистр L).

Смежные вопросы