2015-10-02 3 views
1

Я хочу скомпилировать приложение, использующее libyaml. Я успешно его построил в OS X 10.10. Но после обновления до OS X 10.11 я получил сообщение об ошибке ld: library not found for -lyaml. libyaml устанавливается на Homebrew и размещается на /usr/local/lib. Я могу найти libyaml.dylib в /usr/local/lib.OS X 10.11 библиотека не найдена

Я сделал следующее:

  • csrutil disable к disalbe системы защиты целостности, которая предотвращает ссылки на внешние библиотеки в восстановлении ОС
  • export C_INCLUDE_PATH=/usr/local/include для поиска для заголовка файла libyaml
  • export DYLD_LIBRARY_PATH=/usr/local/lib для ищет динамическая библиотека libyaml, то есть libyaml.dylib

но все же получил такое же сообщение об ошибке.

Run otool -L /usr/local/lib/libyaml.dylib получил:

/usr/local/lib/libyaml.dylib: 
    /usr/local/lib/libyaml-0.2.dylib (compatibility version 3.0.0, current version 3.4.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1225.1.1) 

Платформа: OS X 10,11, Xcode 7.0.1

Как решить эту проблему?

+0

Что такое 'csrutil'? Что делает 'C_INCLUDE_PATH'? Еще несколько тегов помогут понять, как вы создаете свой исполняемый файл и что передается компоновщику. – Droppy

+0

Кто-то сказал мне, что SIP не позволит связывать внешние динамические библиотеки. Позвольте мне отключить его. 'C_INCLUDE_PATH' предназначен для поиска файлов заголовков libyaml. – geeker

+1

Что такое «SIP»? Вы действительно оставляете много деталей, которые могли бы помочь кому-то помочь вам. – Droppy

ответ

-2

только что установил LIBRARY_PATH=/usr/local/lib, чтобы решить эту проблему.

+0

Почему этот ответ должен работать? – Jacksonkr

+0

LIBRARY_PATH влияет на путь поиска времени сборки, как описано здесь: https://gcc.gnu.org/onlinedocs/gcc-6.4.0/gcc/Environment-Variables.html. Я не мог найти это в документации clang, но он также отличит эту переменную. – mephi42

Смежные вопросы