при этом являющееся внешней либой, вместо zlib1.so цепляется на слинкованый обьектник. Это как так то? Это штатное поведение в линуксе чтоли?
Ну линкер видит, что оно уже есть и линкует
какой такой линкер? который был при сборке cairo? :))) Откуда он вдруд стал в курсе что я через несколько лет линкану zlib к себе в приложение?
тот, который вызывается при старте бинарника. ldd он вроде зовется
Так абажжи, а нахрена тогда нужна таблица импорта с именем библиотеки? Т.е. ты хочешь сказать что экспортируемое имя должно быть уникально на всю систему потомучто лоадеру пофигу какая именно либа его экспортирует и при обработке импорта она будет искать первое попавшееся? Чета мне не кажется что это должно так работать (ну и ldd это ваще чет другое)
Еще раз - зачем тогда нужна таблица импорта где стоит четкое указание из какой либы нужно брать адрес функи?
я не большой спец в Linux. но это совершенно стандартное поведение. Можно таким образом переопределять стандартные функции. Гуглить weak symbols
Таблица говорит примерно што, чтобы было откуда - должна быть конкретная зависимость от какой версии и какой библиотеки. Если каиро связывали тож динамически - чо ты удивляешься?)
Не, ну где это применить, я еще разберусь, но тут вообще алогичное что-то. Я случайно обьявил функу ААААА и либа вместо правильной работу, вдруг перемапилась на эту AAAAA вместо положеной ей по умолчанию функции с таким же имени, но не в исполняемом файле а во внешней либе.
Сань, так у меня оме приложение ваще не является ZLIb-ом, какого хрена внешняя либа вдруг начинает в моемм приложении что-то искать по своему импорту, так не должно же работать
Обсуждают сегодня