Кросс-компиляция, CMake и Symlinks
Поэтому я использую это руководство для кросс-компиляции OpenCV для Raspberry Pi:
https://visualgdb.com/tutorials/raspberry/opencv/build/ Я делаю это главным образом потому, что сборка чего-либо на RPi выполняется намного медленнее, чем на Windows, и потому что мне нужны средства удаленной отладки Visual Studio. Все работало, как и ожидалось, особенно с усовершенствованной подсистемой CMake VisualGDB. Однако, когда я достиг этапа развертывания, я столкнулся с некоторыми неприятностями.
Во-первых, SmarTTY не может загрузить файл в каталог /usr, поскольку в приложении нет возможности применить команду sudo. Я мог скопировать все в каталог / home / pi и затем рекурсивно скопировать все в /usr, который работал как чудо! У меня работала удаленная отладка, и скомпилированные приложения подобрали все необходимые зависимости. Я не знаю, есть ли альтернатива ручному копированию файлов.
Второе раздражение было, когда я использовал команду ldconfig:
pi @ raspberrypi: ~ $ sudo ldconfig
ldconfig: /usr/lib/libopencv_calib3d.so.4.0 не является символической ссылкой
.....
pi @ raspberrypi: / usr / lib $ ls libopencv_calib3d. * -al
-rwxr-xr-x 1 корневой корень 9832912 17 октября 18:16 libopencv_calib3d.so
-rwxr-xr-x 1 корневой корень 9832912 17 октября 18:17 libopencv_calib3d.so.4.0
-rwxr-xr-x 1 корневой корень 9832912 17 октября 18:16 libopencv_calib3d.so.4.0.0
Как видите, вместо создания одного.so-файла и нескольких символических ссылок он создает несколько копий одного и того же файла. Это в основном потому, что Windows не поддерживает символические ссылки. Сейчас существует несколько специальных решений, таких как скрипты, которые конвертируют дубликаты файлов в символические ссылки, но это не выглядит как надежный подход. Как вы решаете эту проблему в повседневных задачах кросс-компиляции?