Как я могу лучше всего проверить наличие зависимостей библиотеки C? - PullRequest
2 голосов
/ 06 ноября 2010

Я создаю что-то, что устанавливает стек высокого уровня, и для этого мне нужно установить вещи более низкого уровня.

Самый простой способ проверить, установлена ​​ли, скажем, Java, это просто выложить which java в сценарии оболочки и проверить, может ли он его найти.Теперь я нахожусь в точке, где мне нужно сделать некоторые библиотеки без очевидного двоичного кода - в основном, например, include изнутри C. libxml.

Я ужасно зеленый для C вВообще, так что для меня это немного сложно.:) В идеале я мог бы просто создать сценарий оболочки, который вызывает небольшое приложение C, которое вызывает #include <xxxx>, где xxxx - это библиотека, которую я проверяю на существование.Если он не может его найти, он выдает ошибку.К сожалению, конечно, все, что происходит до компиляции, так что это не так динамично, как хотелось бы.

Я делаю это в системе, в которой, вероятно, ничего не установлено (будь товысокоуровневые менеджеры по языку или пакетам или что там у вас), так что я больше ищу способ сценариев основного сценария оболочки (или, может быть, какие-то хитрые опции gcc для C или командной строки)Или, может быть, просто вручную искать пути включения, которые gcc будет искать в любом случае /usr/local/include, /usr/include и т. Д.).Есть мысли?

Ответы [ 2 ]

4 голосов
/ 06 ноября 2010

Автоинструмент - это действительно то, что вам нужно.Это огромная (и причудливая) структура для решения этой самой проблемы: http://www.gnu.org/software/autoconf/

Вы также можете использовать pkg-config, которая будет работать с более новым программным обеспечением, использующим этот механизм: http://pkg-config.freedesktop.org/wiki/

1 голос
/ 06 ноября 2010

это цель configure (часть automake и autoconf)

...