Почему мы прошли этап связывания и по-прежнему пропускаем символы?

операционная система: AIX 5.3. компилятор: xlC_r

система сборки: "Unix Makefiles"

наше приложение использует несколько статических (.a) библиотек и несколько общих ( .so) библиотек. процесс сборки проходит успешно (мы получаем несколько предупреждений о повторяющихся символах). но когда мы пытаемся выполнить, мы получаем ошибку отсутствия символа.

Примечание: мы не используем dl для загрузки общих библиотек во время выполнения.

Мы что-то упускаем?

Почему мы прошли этап связывания и по-прежнему пропускаем символы?


person Community    schedule 07.11.2009    source источник
comment
Есть несколько вероятных причин, и все они сложно объяснить. Предоставьте более подробную информацию: какие символы отсутствуют и где они определены во время (статической) ссылки. Командная строка, которую вы используете для ссылки, также может помочь.   -  person Employed Russian    schedule 07.11.2009
comment
Также помните, что AIX имеет другое значение для .a и .so по сравнению с другими Unix / Linux.   -  person Douglas Leeder    schedule 13.11.2009


Ответы (2)


Динамические символы проверяются во время компоновки, поэтому, если вам что-то не хватает при выполнении, то любая из динамических библиотек или их зависимости могут быть не на правильном пути.

person Arkaitz Jimenez    schedule 07.11.2009

Общие библиотеки могут зависеть от других общих библиотек, которые они не могут найти во время выполнения.

Убедитесь, что ваша среда настроена правильно, чтобы dlopen () знал, где искать другие общие библиотеки.

person Martin York    schedule 07.11.2009