Как скомпилировать C в Linux и Solaris? - PullRequest
2 голосов
/ 27 июня 2011

Я хочу сделать Makefile для компиляции как в Linux, так и в Solaris.Я знаю, как сделать это по отдельности, но как я могу объединить и то и другое, чтобы определить, какую ОС я использую?Я пытаюсь сделать это только для простого файла C - но это имя компилятора, которое меняется.

Ответы [ 2 ]

5 голосов
/ 27 июня 2011

GNU Autoconf был разработан для решения этой самой проблемы:

Autoconf - это расширяемый пакет макросов M4, которые создают сценарии оболочки для автоматической настройки пакетов исходного кода программного обеспечения.Эти сценарии могут адаптировать пакеты для многих типов UNIX-подобных систем без ручного вмешательства пользователя.Autoconf создает сценарий конфигурации для пакета из файла шаблона, в котором перечислены функции операционной системы, которые пакет может использовать, в виде вызовов макросов M4.

Я сам использовал Autoconf для парыпростых проектов.Вы можете взглянуть на исходный код, чтобы узнать, как использовать Autoconf для простого обнаружения функций:

Обратите внимание, что цельAutoconf не должен определять вашу операционную систему.Скорее, он предназначен для обнаружения функций, настроек и т. Д., Которые могут присутствовать или не присутствовать в вашей операционной системе.

Подумайте над вопросом: «Как называется компилятор C на этой платформе?»не "я работаю на Linux или Solaris?"

0 голосов
/ 27 июня 2011

Я уверен, что большинство людей скажут, что они используют какие-то модные автоинструменты. Они правы конечно.

Но ... вы можете поместить что-то вроде следующего в ваш make-файл.

OS = `uname -s`
ifeq ($(OS),Linux)
  ...
endif
ifeq ($(OS),Sun)
  ...
endif
...