связывая беспорядок с libc - PullRequest
0 голосов
/ 13 ноября 2009

У меня есть библиотека, скомпилированная в файл .a, связанная с моим приложением. (iphone, разработка с Xcode)

Кажется, все в порядке, связывание похоже на успех, но при запуске программы происходит сбой. Точка сбоя - при вызове memcmp () в статически связанной библиотеке. Отладчик показывает всевозможные вещи, названные с помощью «dyld» в своих именах, поэтому кажется, что по какой-то причине он не может разрешить memcmp, начинает искать динамические библиотеки, а затем завершается неудачей.

AFAIK memcmp находится в libc, поэтому проблем не должно быть. (попытался также передать -lc компоновщику, и это не помогло, как я и ожидал)

Так как это должно работать? Почему статически связанная библиотека не может использовать что-либо из libc? Как мне его скомпилировать?

Спасибо

Ответы [ 2 ]

0 голосов
/ 18 декабря 2009

Возможно, кому-то будет полезно, если я поделюсь, в чем проблема:

Библиотека не была скомпилирована для той же версии ОС, что и основная программа, поэтому она ожидала, что libc будет отличаться от того, который был найден при запуске.

0 голосов
/ 14 ноября 2009

libc, очевидно, динамически связан на вашей платформе. Соответствующая версия не может быть найдена во время выполнения, чтобы удовлетворить зависимость, сгенерированную во время ссылки.

Я не могу объяснить, как это могло произойти, кроме повреждения файловой системы или вызова chroot до того, как произойдет динамическое связывание (что может показаться маловероятным).

...