2014-01-18 3 views
0

Предположим, у меня есть /foo/X.a и /foo/X.dylib и LDFLAGS=-L/foo. Что будет делать AC_CHECK_LIB? Есть .dylib гарантированно имеет приоритет над .a? Наоборот? Случайные?AutoConf - AC_CHECK_LIB, связанный с дублирующими библиотеками

Предположим, у меня есть /foo/Y.a и /bar/Y.a, и LDFLAGS=-L/foo:/bar? Что будет тогда?

Есть ли способ вручную установить приоритет?

ответ

1

Есть ли способ вручную установить приоритет?

You вручную установить precedence of library search с помощью опции -L.

Кроме того, что если у меня есть /foo/Y.a и /bar/Y.a и LDFLAGS = -L/Foo:/бар Что будет тогда?

Он будет выглядеть в каталоге /foo:/bar перед путями библиотек по умолчанию. Из вашего вопроса неясно, действительно ли Y.a связано с чем угодно.

Что сделает AC_CHECK_LIB? Является ли .dylib гарантированным иметь приоритет над .a? Наоборот? Случайные?

Это не будет случайным, но будет зависеть от других параметров, данных configure (например LDFLAGS, --disable-shared и т.д.). Все AC_CHECK_LIB делает plop в названии выбранной функции в функцию main (с добавлением соответствующих библиотек) и посмотреть, не связано ли это.

1

Эта проблема не устранена autoconf. В случае, если у вас есть как /foo/X.a, так и /foo/X.dylib, сценарий configure будет просто пытаться связать с libX и сделает все, что делает ваша инструментальная цепочка. Если ваш компоновщик использует X.a, тогда скрипт configure выполнит свои тесты, используя X.a. Если ваш компоновщик использует X.dylib, тогда скрипт configure будет использовать это. Таким образом, способ установления приоритета будет зависеть от вашей инструментальной цепочки (например, вы можете добавить -Bstatic в LDFLAGS).