У меня есть библиотека 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 для его компиляции.