У меня есть маленькая часть кода, который зависит от многих статических библиотек (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++ в одну?.
Статические библиотеки не связываются с другими статическими библиотеками. Единственный способ сделать это - использовать ваш инструмент библиотекаря / архиватора (например Ar на Linux), чтобы создать одну новую статическую библиотеку, путем объединения нескольких библиотек.
Отредактируйте: В ответ на ваше обновление, единственный способ, которым я знаю, чтобы выбрать только символы, которые необходимы, - это вручную создать библиотеку из подмножества файлов .o, которые содержат их. Это сложно, потребляет время и ошибка. Я не знаю о любых инструментах, чтобы помочь сделать это (не сказать, что они не существуют), но это сделало бы довольно интересный проект для производства одного.
Статическая библиотека - это просто архив из объектов объектов .o
. Извлеките их Ar
(при условии UNIX) и упаковывают их обратно в одну большую библиотеку.
Если вам нужен определенный ресурс, доступ к которому осуществляется из любой части программы, ознакомьтесь с Singleton Design Pattern .
-121--2739188-Мы прошли ноябрь и до сих пор нет VS2010 версии, боже, я пристрастился к этой вещи
-121--4350269-Если вы используете Visual Studio, то да, вы можете это сделать.
Средство построителя библиотек, поставляемое с Visual Studio, позволяет объединять библиотеки в командной строке. Хотя я не знаю пути сделать это в визуальном редакторе.
lib.exe /OUT:compositelib.lib lib1.lib lib2.lib