большой файл статической библиотеки c ++ после компоновки - PullRequest
0 голосов
/ 19 марта 2011

Я строю библиотеку из моего исходного кода, который содержит как заголовочные (.hpp), так и исходные (.cpp) файлы.У меня есть файл make, который по отдельности компилирует все исходные файлы в соответствующий объектный файл, а затем операторы создания библиотеки (ar rcs ..), которые объединяют все файлы * .o и создают из него статическую библиотеку.Результирующий размер файла библиотеки огромен (около 17 Мб).Вместо этого, когда я делаю g ++ -o a.out * .cpp, размер файла out составляет 1,4 Мб.Команда архиватора (ar rcs) не удаляет избыточную информацию из всех отдельных объектных файлов?Я также создал общие объекты, и они тоже были небольшими, но мне нужен статический файл библиотеки для моей цели

Ответы [ 2 ]

1 голос
/ 19 марта 2011

Попробуйте strip библиотека, информация об отладке и символах и таблицы могут занять дополнительное место.

Кроме того, опция ar s может привести к завышению результирующего архива (опять же, strip или простоне используйте ar rcs, просто ar rc).

0 голосов
/ 19 марта 2011

Что происходит, когда вы связываете свою статическую библиотеку в окончательный двоичный файл?Есть много дополнительных данных, которые должны быть удалены во время процесса соединения в двоичный файл.

...