- Мы говорим инструменту CMake для сборки wiringPi, сериализатора и т. Д. И связи с приложением (исполняемым файлом, созданным в моем коде)?
Не совсем. Эта команда сообщает CMake, что библиотеки wiringPi
, serializer
, и т. Д. должны быть связаны с целевым приложением во время этапа связывания с этой целью. В нем ничего не говорится о создании самих библиотек, и обычно ожидается, что они уже будут доступны, а не созданы.
- Где находятся все эти библиотеки?
Может варьироваться. Компилятор имеет список каталогов по умолчанию, в котором он ищет библиотеки. Другие команды CMake могут добавлять параметры ссылок, которые добавляют каталоги в этот список.
- Когда я делаю
ldconfig -p | grep <libraryname>
, для вышеуказанных библиотек иногда я нахожу выходные данные, такие как следующие, а иногда
ничего, почему это так?
ldconfig
сообщает о библиотеках, известных компоновщику dynamic . Это отличается от компоновщика, который запускается во время компиляции, и каталоги и библиотеки, о которых оба знают, не обязательно совпадают. Причины, по которым ldconfig
может не указывать данную библиотеку, включают:
- Библиотека не установлена.
- Установлена только статическая версия библиотеки.
- Библиотека не находится ни в одном месте, которое динамический компоновщик проверяет по умолчанию (дополнительные каталоги могут быть указаны при запуске программы, по крайней мере, двумя различными способами).
- Является ли target_link_libraries достаточно умным, чтобы искать библиотеки и в подкаталогах? Я имею в виду, что некоторые из них находятся под
user/lib
, а некоторые - еще один уровень, например /usr/lib/arm-linux-gnueabihf
Это не функция CMake, а скорее выбранный набор инструментов и его конфигурация (в Linux это часто набор инструментов GNU с GCC). Обычно можно с уверенностью предположить, что набор инструментов использует все правильные стандартные каталоги библиотек по умолчанию. Иногда CMake может быть успешно проинструктирован для поиска определенных библиотек и в других вероятных местах, но target_link_libraries
не является частью этого.