разрабатывать C ++ без Xcode IDE - PullRequest
3 голосов
/ 03 октября 2010

Я хочу разрабатывать программы на C ++ для Mac OS, и я установил Xcode с кучей фреймворков.

Однако я хотел бы написать код без Xcode IDE , но просто написать свой собственныйmakefile и непосредственно компилировать / связывать с gcc (поставляется с Xcode).

Взять в качестве примера программу opengl.Я попытался скомпилировать его с помощью команды:

gcc -I / usr / include / -I / Developer / SDKs / MacOSX10.6.sdk / Система / Библиотека / Frameworks / GLUT.framework / Headers/ -I / Разработчик / SDKs / MacOSX10.6.sdk / Система / Библиотека / Каркасы / OpenGL.framework / Заголовки -L / usr / lib -L / usr / X11 / lib / -L / Разработчик / SDKs / MacOSX10.6.sdk / Система / Библиотека / Каркасы / OpenGL.framework / Библиотеки / -lGL -lGLU -lGLUTt main.cpp

или

gcc -I / usr / include/ -L / usr / lib -framework OpenGL -framework GLUT -lm main.cpp

Но они закончились ошибкой связывания

Неопределенные символы:
"std :: basic_ostream

:: operator << (long) ", на который ссылаются из: reshape (int, int) в ccKBRSF9.o display () в ccKBRSF9.o" ___gxx_personality_v0 ", на который ссылаются из:___ gxx_personality_v0 $ non_lazy_ptr в ccKBRSF9.o (может быть, вы имели в виду: ___ gxx_personality_v0 $ non_lazy_ptr) "std :: ios_base :: Init :: ~ Init ()", по ссылке: ___tcf_0 в ccKBRSF9._sdd :::: operator [] (unsigned long) const ", на который ссылаются из: std :: __ verify_grouping (char const *, unsigned long, std :: basic_string, std :: allocator> const &) в ccKBRSF9.o std :: __ verify_grouping (char const *,long без знака, std :: basic_string, std :: allocator> const &) в ccKBRSF9.o std :: __ verify_grouping (char const *, unsigned long, std :: basic_string, std :: allocator> const &) в ccKBRSF9.o "std:: basic_ostream> & std :: operator << (std :: basic_ostream> &, char const *) ", на который ссылается: клавиатура (unsigned char, int, int) на клавиатуре ccKBRSF9.o (unsigned char, int, int) вКлавиатура ccKBRSF9.o (без знака char, int, int) в ccKBRSF9.o изменяется (int, int) в ccKBRSF9.o display () в ccKBRSF9.o "std :: ios_base :: Init :: Init ()", на которую ссылаются из: __static_initialization_and_destruction_0 (int, int) в ccKBRSF9.o
"std :: basic_string, std :: allocator> :: size () const", по ссылке: std :: __ verify_grouping (char const *, unsigned long, std:: basic_string, std :: allocator> const &) в ccKBRSF9.o "std :: cout", на который ссылается: __ZSt4cout $ non_lazy_ptr в ccKBRSF9.o (возможно, вы имели в виду: __ZSt4cout $ non_lazy_ptr) ld: символ (ы) не найден collect2: ld вернул 1 состояние выхода

Я что-то пропустил?

Ответы [ 2 ]

8 голосов
/ 03 октября 2010

Используйте g++ для компиляции C ++.Это интерфейс C ++ для GCC.Например:

g++ -I/usr/include/ -L/usr/lib -framework OpenGL -framework GLUT -lm main.cpp
0 голосов
/ 16 мая 2018

Вы также можете использовать clang++, но в обоих случаях вам придется использовать компилятор C++ или параметр -lstdc++.

...