Как удалить неиспользуемые ссылки из общей библиотеки (elf / gcc) - PullRequest
3 голосов
/ 18 августа 2011

Я создаю разделяемую библиотеку, в которой есть открытый интерфейс, найден какой-то объектный файл public.o

Общая библиотека состоит из 100+ других объектных файлов, и я хочу уменьшить размер .so файла. Есть ли способ удалить все символы из общей библиотеки, на которые не ссылается public.o? В качестве альтернативы, есть ли способ сохранить только зависимости внешних функций "C", удалив все неиспользуемые имена C ++?

Ответы [ 2 ]

2 голосов
/ 13 ноября 2011

Посмотрите на это руководство:http://gcc.gnu.org/wiki/Visibilityнапример, объясняется, как работать с именами C ++.

1 голос
/ 26 октября 2011

Вы можете использовать последний GCC (например, версию 4.6.1) и передать -flto во время компиляции и во время (библиотеки) ссылки.

( добавлено ) Вы также можетеиграть с атрибутом visibility .

Но я не буду беспокоиться о размере * .so

...