У меня есть случай в Linux, где gcc и ld собирают вещи корректно, но во время выполнения я получаю неопределенный символ (для чего-то в libxerces-c.so.28), сообщаемый одной из моих собственных общих библиотек, когда запустить мою программу.
Сначала предполагалось, что кэш был сломан, недавно установлены xerces или что-то подобное, поэтому я запустил ldconfig. Не исправить это. Но добавление / usr / lib к ld.so.conf и последующий запуск ldconfig это исправили.
Насколько я понимаю, / lib, / usr / lib и, возможно, один или два других места всегда ищутся динамическим компоновщиком во время выполнения.
??
(Единственное, что необычно, - это Java-программа, использующая jni для доступа к разделяемым библиотекам приложения. Опять же, если бы это было что-то рациональное, я бы видел эту ошибку в любое время за последние N лет этого приложения). .)