Как связать разделяемую библиотеку с --as-required с automake? - PullRequest
3 голосов
/ 28 июля 2011

Как связать общую библиотеку с --as-needed с помощью Automake? Когда я попытался добавить флаг к LDFLAGS, я увидел libtool, названный так:

/bin/bash ../../libtool --mode=link ... -Wl,--as-needed ... dependencies

Что приводит к вызову в GCC следующим образом:

gcc -shared ... dependencies ... -Wl,--as-needed ...

Но это неправильный порядок.

  • Есть ли способ сделать это с помощью Libtool?

  • Или есть хороший способ создания общих библиотек с использованием Automake, но без Libtool? (Я был разочарован в Libtool по другим причинам в прошлом ...)

Кажется, что ребята из Debian тоже столкнулись с этой проблемой ( отчет об ошибках ), но я бы хотел исправить это для своего проекта, а не связываться с моей системой (если я не пойму это исправление) .

Ответы [ 3 ]

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

Вы можете исправить это только для своего проекта, изменив скрипт ltmain.sh в исходных текстах проекта.Вы даже можете добавить его как часть начальной загрузки автоинструментов, например: https://meego.gitorious.org/tracker/tracker/commit/cf2ca3414aeba146dceacc5ecd84765f4c08a06f

1 голос
/ 31 июля 2011

Вы можете исправить это в Makefile.am; в основном это то же самое, что и ответ на мой вопрос здесь , за исключением того, что вам нужно использовать -(no-)as-needed вместо -(no-)whole-archive.

0 голосов
/ 04 октября 2014

Действительно неприятная проблема, особенно для обслуживания пакетов.

Debian имеет встроенную поддержку для исправления libtool и исправления этой проблемы в пакетах Debian

dh_autoreconf --as-needed

Или, если вы используете CDBS:

include /usr/share/cdbs/1/rules/autoreconf.mk

DEB_DH_AUTORECONF_ARGS += --as-needed
...