Почему флаг -export-dynamic не применяется к архивам? - PullRequest
2 голосов
/ 28 января 2010

Если я скомпилирую и свяжу исполняемый файл с флагом -export-dynamic, он не будет применяться к символам, хранящимся в связанных архивах. Флаг только на символах экспорта для связанных объектов, которые не находятся в архивах. Может кто-нибудь объяснить, почему это будет?

Ответы [ 2 ]

1 голос
/ 28 января 2010

Кажется, проблема в том, что файлы .o внутри файлов .a связаны только в том случае, если они нужны исполняемому файлу (очевидно, это называется "зачистка"). В моем случае символы требуются только для разделяемой библиотеки, которая явно открывается с помощью команд dl. Я могу связать с опцией --whole-archive (по крайней мере, в GNU), которая заставит связать все объекты в архиве.

0 голосов
/ 28 января 2010

Поскольку архивы ничего не импортируют и не экспортируют.

Файл .a - это просто сборник файлов .o. Не существует понятия импорта и экспорта до тех пор, пока они не будут связаны в исполняемый файл или в общую библиотеку. В архиве 'ar' нет структуры данных для хранения таких вещей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...