Мне действительно нужно указывать расположение библиотеки для связи с automake? - PullRequest
0 голосов
/ 08 августа 2011

Я работаю над мультиплатформенной программой C. Makefile стал довольно сложным из-за различных компиляторов, расположения библиотек и т. Д. На каждой машине. Я подумал, что Autoconf/Automake было бы хорошим решением, хотя мой предыдущий опыт использования этих инструментов был минимальным.

У моего Makefile.am есть строка LIBS=-lX11, но связывание завершается ошибкой "/usr/bin/ld: cannot find -lX11". Я могу обойти это, добавив "-L/usr/X11R6/lib/" к определению LIBS, но нужно ли мне это делать? Когда я запускаю ./configure, он говорит:

checking for X... libraries /usr/X11R6/lib, headers /usr/X11R6/include

Так что, похоже, Automake должен знать, где его найти. Есть ли способ, которым я могу ссылаться на его местоположение в Makefile.am без необходимости его жесткого кодирования, поскольку X11 libs будет находиться в разных местах на каждой машине?

1 Ответ

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

Ваш Makefile.am не должен устанавливать LIBS.Если вам необходимо установить связь с библиотекой, файл configure.ac должен включать проверку библиотеки, а скрипт configure соответствующим образом установит LIBS.Кроме того, Makefile.am не должен указывать пути к библиотекам.Каждая система должна быть настроена так, чтобы прекомпилятор мог находить заголовки, а компоновщик мог находить библиотеки.Если система не настроена так, что компоновщик может найти библиотеку, правильное решение для пользователя - указать местоположение в LDFLAGS, а не жестко кодировать что-то в Makefile.am.(например, вместо добавления -L / p / a / t / h к Makefile, вы должны добавить LDFLAGS = -L / p / a / t / h к вызову configure.)

...