Если вы хотите создать общую библиотеку, вы можете использовать это:
Вы можете использовать флаг - весь архив из ld :
- весь-архив
Для каждого архива, упомянутого в командной строке после параметра --whole-archive, включайте каждый объектный файл в архиве в ссылку, а не ищите в архиве требуемые объектные файлы. Обычно это используется для преобразования архивного файла в общую библиотеку, заставляя каждый объект включаться в результирующую общую библиотеку. Эта опция может быть использована более одного раза.
Два замечания при использовании этой опции от gcc: во-первых, gcc не знает об этой опции, поэтому вы должны использовать -Wl, -whole-archive. Во-вторых, не забудьте использовать -Wl, -no-whole-archive после вашего списка архивов, потому что gcc добавит свой собственный список архивов в вашу ссылку, и вы, возможно, не захотите, чтобы этот флаг также влиял на них.
Для статических библиотек вам, возможно, придется сначала извлечь объекты.
Я нашел следующее для ar
gnu ar может по желанию создать тонкий архив, который содержит индекс символа и ссылки на оригинальные копии файлов-членов архивов. Такой архив полезен для создания библиотек для использования в локальной сборке, где предполагается, что перемещаемые объекты будут оставаться доступными, а копирование содержимого каждого объекта будет только тратить время и пространство. Тонкие архивы также сглаживаются, так что добавление одного или нескольких архивов в тонкий архив будет добавлять элементы вложенного архива по отдельности. Пути к элементам архива хранятся относительно самого архива.
Может быть, вы можете использовать такой тонкий архив .