Я на AIX 5.3, работая с C.Сделать AIX загружать все общие символы во время выполнения?
У меня есть приложение (foo), которое ссылается в общей библиотеке (lib1.so) во время выполнения, а затем динамически загружает другую библиотеку (lib2.so) через dlopen(). lib2.so использует некоторые функции в lib1.so, что foo не использует. Когда я запустить приложение, я получаю сообщение об ошибке, подобное:
rtld: 0712-001 Symbol someLibFunc was referenced from module
/libdir/lib2.so(), but a runtime definition of the symbol was not found.
Я не верю, что изменение dlopen() флаги будут иметь никакого эффекта, так как мой вопрос, кажется, что-то делать с тем, что символы импортируется, когда происходит привязка времени выполнения. Есть ли какой-либо тип ld, который я могу использовать при создании foo, чтобы заставить его импортировать все общие символы библиотеки? Эта же конструкция отлично работает в моей Linux-среде.
Дикое предположение: может быть, система кэшировала старую версию lib1.so, которая не содержала функцию? (Запуск 'slibclean'?) – Inspired
Я разработчик для крупной компании, и slibclean не доступен в наших AIX-блоках, к сожалению (я не знаю почему). Тем не менее, я разработал совместно используемые библиотеки в прошлом без проблем кэширования, поэтому я не думаю, что это преступник. – stevenmalin