Linux下Zip命令无法压缩软链接指向的实际文件的解决方案
一、前言
最近在作横向课题,在进行RKNN1808
的目标检测C++推理环境部署时,遇到了视频和图像的处理问题。出现这些问题,最好是找谁呢?找OpenCV
。
但是本身开发板是个空架子,这些东西也没法装上去(甲方给板子装的硬盘就2个G,都快满了),于是就需要做OpenCV的移植。那就需要用CMakeLists
了,我编译完成后,想要用Zip
命令压缩好,然后上传到远程的RKNN1808开发板,结果弄好后发现*.so
文件压根就没压缩进去。
我仔细检查了压缩的输出信息,发现有以下警告:
root@ubuntu:/home/midsummer/Tool/rknpu-master/rknn/rknn_api/examples/rknn_yolov5_demo# zip -r install.zip installzip warning: name not matched: install/rknn_yolov5_demo/OpenCVlib/libopencv_core.sozip warning: name not matched: install/rknn_yolov5_demo/OpenCVlib/libopencv_gapi.sozip warning: name not matched: install/rknn_yolov5_demo/OpenCVlib/libopencv_imgproc.sozip warning: name not matched: install/rknn_yolov5_demo/OpenCVlib/libopencv_highgui.sozip warning: name not matched: install/rknn_yolov5_demo/OpenCVlib/libopencv_objdetect.sozip warning: name not matched: install/rknn_yolov5_demo/OpenCVlib/libopencv_imgcodecs.sozip warning: name not matched: install/rknn_yolov5_demo/OpenCVlib/libopencv_ml.sozip warning: name not matched: install/rknn_yolov5_demo/OpenCVlib/libopencv_photo.sozip warning: name not matched: install/rknn_yolov5_demo/OpenCVlib/libopencv_stitching.sozip warning: name not matched: install/rknn_yolov5_demo/OpenCVlib/libopencv_video.sozip warning: name not matched: install/rknn_yolov5_demo/OpenCVlib/libopencv_calib3d.sozip warning: name not matched: install/rknn_yolov5_demo/OpenCVlib/libopencv_flann.sozip warning: name not matched: install/rknn_yolov5_demo/OpenCVlib/libopencv_features2d.sozip warning: name not matched: install/rknn_yolov5_demo/OpenCVlib/libopencv_videoio.so
二、问题分析及解决办法
我查阅了相关资料,最终认定问题为:
在使用
zip
命令压缩文件时,如果压缩的目标是一个软链接文件(即以l
开头的文件类型),默认情况下zip
命令不会将软链接指向的实际文件包含在压缩文件中。
如果你想要将软链接指向的实际文件也包含在压缩文件中,那么使用zip命令时就不能只使用下面的写法:
zip -r 压缩文件名 压缩目录/文件
而要加上 -y
选项,该选项会将软链接指向的文件作为普通文件处理,并将其包含在压缩文件中:
zip -yr install.zip install
三、心灵的救赎
- 有思念你的人在的地方,就是你的归处。 ——岸本齐史《火影忍者》
- 坐在亭子里,觉山色皆来相就。 ——汪曾祺
- 浮生恰似冰底水,日夜东流人不知。 ——杜牧《汴河阻冻》