Параметры компоновщика для статической ссылки на файл lib * .a при создании общего объекта - PullRequest
0 голосов
/ 18 июня 2010

Как я могу сказать компоновщику, что статически связывать libfoo.a при создании общего объекта sharedobj.so с помощью gcc / make.

Я попытался передать параметры LDFLAG LDFLAGS + = -W1 --whole-archive -L / path / to / libfoo -lfoo

Я также пытался передать LDFLAGS параметры LDFLAGS + = -W1, статический -L / path / to / libfoo -lfoo

Я также попытался передать LDFLAGS параметры LDFLAGS + = -W1, Bstatic -L / path / to / libfoo -lfoo

и

Я также попытался передать LDFLAGS параметры LDFLAGS += -W1, static_linked -L / path / to / libfoo -lfoo

Я прочитал несколько ссылок, которые говорят мне, как это сделать, но ни одна до сих пор не работала.

Ответы [ 3 ]

1 голос
/ 18 июня 2010

LDFLAGS - это просто функция auto (conf | crap), и компоновщик никогда не смотрит на это. Просто укажите все параметры в командной строке, например:

gcc obj1.o obj2.o ... -shared -o libfoo.so -L / path / to / lib -lbar

0 голосов
/ 18 июня 2010

Вы можете рассматривать библиотеку как архив (.a) объектных (.o) файлов. Вы можете использовать его аналогично объектным файлам на шаге компоновщика.

Однако мне неясно, будет ли весь архив включен в общую библиотеку объектов (или exe) или только те части, которые требуются - мое понимание было только тем, что требуется, но я немного не играл с * nix , Для .so это может означать, что оно не будет включать и экспортировать то, что не используется самим .so.

0 голосов
/ 18 июня 2010

Я не совсем понимаю, вы хотите, чтобы статическая библиотека была частью вашей общей?

Тогда он должен работать, когда вы добавляете его в качестве зависимости - как и другие файлы объектов (.o).

Ссылка a.o b.o c.o staticlib.a в libsharedobj.so

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...