Я пытаюсь собрать и связать C ++, cmake-based проект с clang (3.0). Этот проект связан с несколькими библиотеками, которые установлены в пользовательском каталоге / my / dir /. Этот каталог включен в переменные окружения LD_LIBRARY_PATH и LIBRARY_PATH. Проект строит и связывает хорошо с g ++.
Команда link, сгенерированная и выполненная cmake, выглядит следующим образом:
/usr/bin/clang++ -O3 stuff.cpp.o -o stuff -rdynamic -lmylib
Затем ld жалуется следующим сообщением:
/usr/bin/ld: cannot find -lmylib
Приведенная выше команда ссылки работает нормально, когда я добавляю ее вручную -L/my/dir/
, Есть ли способ ссылки без указания -L
флаг?
$LD_LIBRARY_PATH
переменная окружения (и ее различные альтернативы на других платформах на основе UNIX) используется в время выполнения, не время ссылки, найти библиотеки.
С помощью -L
это правильный подход, и его нельзя избежать.
Примечание: лучший подход в Linux (вы не указываете свою платформу, так что я предполагаю) — правильно настроить файл в /etc/ld.so.conf.d/
и избегать использования $LD_LIBRARY_PATH
в целом.
Других решений пока нет …