У меня есть Makefile для Linux, который я переношу в Дарвин.Makefile берет кучу файлов .o и связывает их вместе в общий объект .so.Итак, я понял (я не прав насчет этого?), Что лучшим аналогом для этого в Дарвине является dylib.Поэтому я изменил флаг -shared на -dynamiclib.
Теперь код, который я объединяю в dylib, зависит от множества внешних библиотек.Когда я пытаюсь создать dylib, я получаю сообщения об ошибках, указывающие на наличие неопределенных ссылок.Но Makefile для Linux не указывает ни один из параметров -lwh независимо или -L / path / what на этапе сборки, который создает файл .so.Хм?Это связано с тем, что при создании файла .so ELF по умолчанию он оставляет внешние ссылки неразрешенными, а затем, когда загружается общая библиотека, рекурсивно загружает общие библиотеки, которые зависят от используемой вами общей библиотеки.загрузка?Разве не было бы так, что если бы разделяемая библиотека зависела от файла .a или .o, вы бы ДОЛЖНЫ статически связать их с разделяемой библиотекой, иначе вы не могли бы связать во время выполнения?Как можно избежать наличия неопределенных ссылок в библиотеке, которая загружается во время выполнения, если ссылки также не относятся к динамически загружаемым библиотекам?
В любом случае, если я укажу
-undefined suppress -flat_namespace
, это неМне не нужно добавлять эти параметры -l и -L при создании общей библиотеки.Но я все еще не понимаю, как это в конечном итоге может работать.