Соединение статических библиотек к другим статическим библиотекам

У меня есть маленькая часть кода, который зависит от многих статических библиотек (a_1-a_n). Я хотел бы упаковать, что код в статической библиотеке и делает это доступным для других людей.

Моя статическая библиотека, позволяет, называют его X, компиляции прекрасный.

Я создал программу простой выборки, которая использует функцию от X, но когда я пытаюсь связать ее с X, я получаю много ошибок об отсутствующих символах из библиотек a_1 - a_n.

Существует ли способ, которым я могу создать новую статическую библиотеку, Y, который содержит X и вся функциональность, необходимая X (выбранные биты от a_1 - a_n), так, чтобы я мог распределить просто Y, чтобы люди связали свои программы с?


ОБНОВЛЕНИЕ:

Я посмотрел на просто дамп всего с площадью и созданием одного мегаlib, однако, который заканчивается включая большое количество символов, которые не нужны (все.o файлы составляют приблизительно 700 МБ, однако, статически связанный исполняемый файл составляет 7 МБ). Существует ли хороший способ включать только, что на самом деле необходимо?


Это выглядит тесно связанным с тем, Как объединить несколько библиотек C/C++ в одну?.

125
задан UpAndAdam 28 July 2017 в 19:56
поделиться

3 ответа

Статические библиотеки не связываются с другими статическими библиотеками. Единственный способ сделать это - использовать ваш инструмент библиотекаря / архиватора (например Ar на Linux), чтобы создать одну новую статическую библиотеку, путем объединения нескольких библиотек.

Отредактируйте: В ответ на ваше обновление, единственный способ, которым я знаю, чтобы выбрать только символы, которые необходимы, - это вручную создать библиотеку из подмножества файлов .o, которые содержат их. Это сложно, потребляет время и ошибка. Я не знаю о любых инструментах, чтобы помочь сделать это (не сказать, что они не существуют), но это сделало бы довольно интересный проект для производства одного.

66
ответ дан 24 November 2019 в 01:02
поделиться

Статическая библиотека - это просто архив из объектов объектов .o . Извлеките их Ar (при условии UNIX) и упаковывают их обратно в одну большую библиотеку.

9
ответ дан 24 November 2019 в 01:02
поделиться

Если вам нужен определенный ресурс, доступ к которому осуществляется из любой части программы, ознакомьтесь с Singleton Design Pattern .

-121--2739188-

Мы прошли ноябрь и до сих пор нет VS2010 версии, боже, я пристрастился к этой вещи

-121--4350269-

Если вы используете Visual Studio, то да, вы можете это сделать.

Средство построителя библиотек, поставляемое с Visual Studio, позволяет объединять библиотеки в командной строке. Хотя я не знаю пути сделать это в визуальном редакторе.

lib.exe /OUT:compositelib.lib  lib1.lib lib2.lib
44
ответ дан 24 November 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: