2010-01-18 5 views
7

Как заставить automake создать стандартную общую библиотеку вместо libtoolized? Обычно я создавал abc.so, на который ссылается полный путь и загружается в основную программу. Есть ли способ заставить AM сделать то же самое? Если я перечислил его как _LIBRARY, automake жалуется: 'abc.so' is not a standard library name; did you mean 'libabc.a'Automake и стандартные совместно используемые библиотеки

Только для уточнения: Да, мне нужно только .so поддержка - нет статики. И да, я хочу собственное имя файла.

+0

Лол ... Это классический признак чрезмерной техники инженерами. Это происходит, когда инженерам разрешено выполнять требования. Они берут что-то простое и делают его настолько сложным, что его едва можно использовать (если его вообще можно использовать). – jww

ответ

6

Automake не знает, как создать общую библиотеку, потому что нет никакого переносного способа сделать это. Если вы хотите использовать совместно используемую библиотеку Automake, вам необходимо использовать Automake + Libtool. Обратите внимание, что вы можете легко настроить libtool, чтобы не создавать какую-либо статическую библиотеку (с LT_INIT([disable-static]) в вашем configure.ac) по умолчанию.

+0

Не совсем то, что я имел в виду, но должен был принять что-то – viraptor

+0

Хммм ... Это не похоже на хорошее решение, когда явным образом было сказано создавать статические библиотеки. Также см. [27.8 Эмуляция флагов для объектов] (https://www.gnu.org/software/automake/manual/html_node/Per_002dObject-Flags.html) в руководстве Automake. – jww

0

IIRC, нет ничего особенного в библиотеках, созданных с помощью libtool, если вы не ссылаетесь на libltdl. Если вы не хотите использовать libtool, у вас есть возможность выбирать и не заботиться о переносимости, тогда вы можете использовать automake без libtool. Я бы рекомендовал использовать силу libtool вместо этого.

На самом деле, я даже не знаю, что такое _LIBRARY, и не нашел его в the manual/Linking section.

1

Библиотека с использованием libtoolized является оберткой вокруг одной или нескольких стандартных библиотек. Вы можете найти эти библиотеки в «.libs» после запуска «make» или в «$ prefix/lib» после запуска «make install».

На машине с Linux вы должны найти файл под названием «libabc.so».

7

libtool - это путь. Если вы хотите, пользовательское имя, добавьте параметр -module к _LDFLAGS, например:

plugindir= /some/where 
plugin_LTLIBRARIES= abc.la 
abc_la_LDFLAGS= -module