общая библиотека: глобальный текстовый символ преобразуется в локальный текстовый тип - PullRequest
0 голосов
/ 06 августа 2020

У меня есть библиотека stati c, назовем ее static_lib_1.a. У меня есть функция, скажем, "func_1" в этой библиотеке stati c. Когда я запускаю команду 'nm' над этой библиотекой stati c, она показывает:

0x000000 T xxxfunc_1xxx

Что совершенно нормально. Сообщается, что func_1 является глобальным текстовым символом.

Я использую эту библиотеку для подключения к общей библиотеке, скажем, «shared_lib_2.so». Теперь, когда выполняется nm в этой разделяемой библиотеке, я получаю:

0x000000 t xxxfunc_1xxx

Теперь любой другой разделяемый объект, связанный с этим "shared_lib_2.so", сообщает об этом символе как о неопределенной ссылке. Почему этот тип символа изменился с глобального на локальный текст?

Я использую g cc для его компиляции.

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