Как вы упаковываете все зависимости ссылок в одну статическую библиотеку Linux? - PullRequest
0 голосов
/ 24 апреля 2018

Я публикую многоплатформенную библиотеку, и она работает везде, кроме Linux. Возможно, есть способ сделать то, что мне нужно, но я этого не вижу и надеюсь, что кто-то здесь может помочь.

Моя библиотека состоит из двух проектов: «subLibrary.lib» и «library.lib» в Windows (например). Я создаю 'subLibrary', затем связываю ее с 'библиотекой' для распространения. Потребители должны только связаться с «библиотекой», чтобы получить все, включая то, что находится в «subLibrary».

Все остальные платформы работают одинаково - я публикую один гигантский «library.a», который содержит все, и потребители связываются с ним, не имея необходимости знать о каких-либо зависимостях более низкого уровня.

При сборке стандартного исполняемого файла в Linux моя команда link должна указывать не только 'library.a', но и каждую его зависимость. Это связано с тем, что промежуточные библиотеки оставляют символы неразрешенными до позднего времени.

Что я хочу сделать, так это сделать его таким же, как и на других платформах, чтобы исполняемый файл-потребитель мог связываться только с «library.a», и эта библиотека содержала все, что ему нужно.

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

1 Ответ

0 голосов
/ 25 апреля 2018

В Unix библиотека - это просто коллекция всех объектных файлов. Вы можете добавить больше файлов в библиотеку с помощью AR, но вам нужно быть осторожным с конфликтами имен файлов.

...