Я никогда не использовал MacOS
на P C. Я даже не знаю, вызывал ли OS
одно и то же имя на каждом типе устройства. То, что вы видите здесь, является проблемой связывания во время выполнения.
Вы передаете компоновщику флаги, которые сообщают компоновщику, где искать символы и какие символы будут. И тогда бинарный файл построен. Но во время выполнения ld
(двоичный компоновщик / загрузчик исполняемых файлов. Это может быть тот же компоновщик / загрузчик, который создал ваше конкретное приложение) будет искать символы Dynami c в местах, которые являются стандартными к ОС.
Как я уже сказал, я не привык к MacOS. Я использую Linux сейчас. Например, my Linux использует /usr/lib
и /usr/local/lib
путь для поиска динамических c библиотек. Способ, которым программа ld
ищет символы, можно настроить несколькими способами.
Например, Linux
имеет LD_LIBRARY_PATH
, а MacOS имеет DYLD_LIBRARY_PATH
переменные envinronment. См. Этот вопрос и ответы: Можно ли использовать DYLD_LIBRARY_PATH на Ma c OS X? И что за алгоритм поиска в библиотеке Dynami c? . Кстати, я согласен со многими сообщениями там, что редактирование переменной envinronment - лучший способ разрешить эту ситуацию.
Есть также хорошо известный флаг -Wl,--rpath
для компоновщика. Это явно говорит, чтобы добавить путь поиска в файл приложения. Я думаю, что этот метод больше подходит, если вы разработчик и экспериментируете с вашим кодом, прежде чем устанавливать его в нужное место.
Мой ответ на этот вопрос будет таким, что вам следует прочитать руководства. Введите man ld
в своем терминале и посмотрите, какие у вас есть варианты.
Обновление
Ну, у меня на Linux
загрузчик называется ld.so
и компоновщик это ld
. Обновление просто для ответа на комментарий.