Как связать библиотеки в Xcode 4? - PullRequest
4 голосов
/ 29 июля 2011

Я - новичок в Xcode Apple, но я безуспешно следовал документации Xcode и советам по нескольким связанным вопросам.

Я установил GMP в / usr /local / bin, написал небольшую программу с использованием библиотеки и скомпилировал с gcc main.c -lgmp.Он скомпилирован без предупреждений и ошибок, и исполняемый файл работал безупречно.

Я запустил новый проект Xcode (Command Line Tool; Type: C), скопировал код во вновь созданный файл main.c и открылнастройки сборки проекта.Оттуда я устанавливаю Связывание> Другие флаги компоновщика на -lgmp и Пути поиска> Пути поиска в библиотеке на /usr/local/bin.Однако сборка завершается неудачно с ошибкой препроцессора «Gmp.h: такого файла или каталога нет».

Я перепробовал почти все мыслимые заголовки:

#include "gmp.h"

#include <gmp.h>

#include "gmp"

#include "libgmp.a".,.

Это было моим главным препятствием в течение последних трех месяцев, которое не давало мне учиться C. Любая помощь, ведущая меня к возможному решению, будет принята с благодарностью.

Ответы [ 2 ]

8 голосов
/ 29 июля 2011

Есть несколько вещей, которые вы должны настроить в своем проекте XCode. Например, я установил gmp в /opt/gmp/5.0.2, и я буду использовать это в качестве примера. Фактическая библиотека установлена ​​в /opt/gmp/5.0.2/lib, а файлы заголовков - в /opt/gmp/5.0.2/include. При установке библиотеки установка флага - PREFIX на /opt/gmp/5.0.2 будет обрабатывать это автоматически. Если этот флаг не установлен, префикс обычно устанавливается по умолчанию на /usr/local.

  1. Другие флаги компоновщика выглядит правильно, это должно быть имя библиотеки.
  2. Установите Путь поиска заголовка в каталог включения, в моем случае /opt/gmp/5.0.2/include.
  3. Установите Путь поиска библиотеки в каталог lib, в моем случае /opt/gmp/5.0.2/lib.

Поскольку путь поиска заголовка был задан, теперь вы сможете включить файл заголовка следующим образом:

#include <gmp.h>

Конечно, замените /opt/gmp/5.0.2 на путь PREFIX, который вы использовали при установке gmp.

Наконец, вы обычно не устанавливаете библиотеки в /usr/local/bin, вы устанавливаете в /usr/local и позволяете устанавливать любые двоичные файлы в bin, в то время как библиотеки, подобные этим, устанавливаются в lib. Конечно, любая схема пути будет работать, я обычно рекомендую /opt/<project-name>/<version-number>, поскольку она позволяет мне лучше отслеживать то, что я установил, и иметь несколько версий одних и тех же библиотек и инструментов без необходимости сталкиваться с коллизиями.

2 голосов
/ 25 ноября 2012

Я обновил свою систему с снежный барс до горный лев и должен был установить gmp.

Прежде всего я установил Xcode CommandLineTools set.

Во-вторых, установлен Доморощенный . Тогда с этим я сделал шаги в этой теме: https://apple.stackexchange.com/questions/38222/how-do-i-install-gcc-via-homebrew

На последнем шаге я внес изменения в проект xcode, как сказал коллега Маркус Карлссон. Это наконец работает! Очень большое спасибо:)

...