Как я могу имитировать среду разработки GNU / Linux C на OSX Lion? - PullRequest
1 голос
/ 06 августа 2011

Я только что попытался написать простую программу на C для OSX Lion

#include <stdio.h>
int main() {
  printf("hello world\n");                                                                          
  return 0;
}

Компиляция с gcc

$ gcc hello.c
test.c:1:19: error: stdio.h: No such file or directory
test.c: In function ‘main’:
test.c:3: warning: incompatible implicit declaration of built-in function ‘printf’

ОК ... хорошо

$ gcc -I /Developer/SDKs/MacOSX10.6.sdk/usr/include
ld: library not found for -lcrt1.10.6.o
collect2: ld returned 1 exit status

Какие?Давайте посмотрим ...

$ gcc -I /Developer/SDKs/MacOSX10.6.sdk/usr/include -L/Developer/SDKs/MacOSX10.6.sdk/usr/lib test.c
$ ./a.out
hello world

Наконец-то!

Кажется, что нужно приложить немало усилий, чтобы заставить работать привет, как мне заставить gcc найти библиотеки и заголовочные файлы в MacOSX10Каталог .6.sdk по умолчанию, как в Linux?В Linux я нахожу ldd и ldconfig весьма полезными, кажется, что они не существуют в OSX ... есть ли эквивалент?Какие еще полезные инструменты существуют для разработки C на OSX?

Да, я знаю, xcode делает это проще, но предположим, что я хотел использовать vim и командную строку для работы над проектом c с открытым исходным кодом.

Ответы [ 2 ]

1 голос
/ 08 августа 2011

Я могу представить три варианта:

  1. У вас установлено 10,6 и обновлено до 10,7. Вам нужно установить новую версию XCode (4.1, получить ее из магазина приложений), чтобы вернуть инструменты разработчика.

  2. Вы установили XCode, сделали пользовательскую установку и сняли флажок «Разработка UNIX» или что-то в этом роде. Перезапустите установщик и установите недостающие части.

  3. Вы установили неработающую стороннюю версию gcc. Попробуйте which gcc и посмотрите, что вы получите.

1 голос
/ 08 августа 2011

В OS X 10.7, если вы загрузили Xcode 4.1 из Mac App Store и затем запустили установщик, который он загружает (в /Applications), ваша первая попытка должна была сработать, если вы не установили некоторые переменные средыкоторые рассматриваются и влияют на цепочку инструментов gcc компании Apple.В объектном файле, который создается в этом случае, будет использоваться 10,7 ABI по умолчанию (include файлы и библиотеки).Если вы хотите создать что-то, что было бы совместимо с OS X 10.6, вам нужно указать цепочке инструментов использовать ABI SDK 10.6, что вы и сделали в третьей попытке.Автономный проект обычно справляется с этим, настраивая Makefile для автоматизации сборки.Но, если вы не пытаетесь создать что-то на версии OS X (10.7 здесь), которая также будет работать на более ранних версиях OS X (скажем, 10.6), обычно нет необходимости использовать SDK.

...