【问题标题】:How to build linux shared libraries in windows hard disk using linux based platform?如何使用基于 linux 的平台在 windows 硬盘中构建 linux 共享库?
【发布时间】:2015-05-20 20:09:15
【问题描述】:

我正在使用 cmake 从基于 linux 的计算机远程构建打开的 cv 库,运行以下命令后出现此错误:

mount.cifs //10.164.5.10/tgupta /mnt/open_cv -o username=tgupta,password=passwd
然后按照本教程进行操作

http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html

运行make命令后我卡在这个错误

Linking CXX shared library ../../../bin/libopencv_core.so   
CMake Error: cmake_symlink_library: System Error: Operation not supported  
CMake Error: cmake_symlink_library: System Error: Operation not supported  
make[2]: *** [bin/libopencv_core.so.3.0.0] Error 1  
make[1]: *** [opencv/modules/core/CMakeFiles/opencv_core.dir/all] Error 2  
make: *** [all] Error 2

【问题讨论】:

    标签: linux windows opencv shared-libraries mount


    【解决方案1】:

    我也在做同样的事情,即

    • 在 Windows 主机上运行的虚拟机中的 linux 来宾的共享外部驱动器上构建 OpenCV,

    • 我在符号链接方面遇到了同样的错误。

    以下内容对我有用:

    1. 完全关闭虚拟机和 VirtualBox,
    2. 打开 cmd.exe 并输入以下内容,
    $ cd C:/Program Files/Oracle/VirtualBox
    $ VBoxManage setextradata VM_NAME
    $ VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
    

    在我的情况下,VM_NAME=ubuntu14SHARE_NAME=D_DRIVE(是的,删除“sf_”前缀)。

    1. 以管理员身份打开 VirtualBox,并启动 Ubuntu/(您的 linux 客户机),重建 OpenCV,现在一切正常!

    我从这里得到它:"Virtualbox Sharedfolder Symbolic Link Error"

    注意:想一想,一个小的变化,但在我的情况下,我想会有很大的不同 - 我的外部设备是 NTFS 格式的。据我所知,NTFS 确实支持某种符号链接。我不确定此解决方案是否也适用于 FAT (VFAT/FAT32) 格式的驱动器。

    【讨论】:

      【解决方案2】:

      遇到同样的问题, 我找到了解决方案:

      这个想法是让库指向 linux 文件系统中的一个目录,比如说/home/<user>/libopencv。 我编辑了文件CMakeLists.txt 并更改了:

      set(LIBRARY_OUTPUT_PATH         "${OpenCV_BINARY_DIR}/lib")
      

      进入

      set(LIBRARY_OUTPUT_PATH         "/home/<user>/libopencv")
      

      然后运行您的 CMake 命令,make 应该会运行良好! 库很轻,而外部硬盘驱动器仍然很重。

      【讨论】:

        【解决方案3】:

        这永远不会起作用,因为您将文件保存在不支持创建符号链接的文件系统上。

        您应该在 Linux 的文件系统上构建所有内容,例如 ext4、btrfs 或其他兼容的文件,归档您构建的文件,然后将它们复制到 Windows 共享。

        或者,您可以使用 Samba 与 Windows 共享您的 Linux 文件系统,而不是与 Linux 共享 windows 目录。

        【讨论】:

        • 由于我的 linux 平台没有足够的内存,所以与 windows 共享 linux 文件系统是不可行的。请告诉我如何在 windows 中构建 open cv 的 .so(即共享文件)文件只有那是交叉编译的东西。
        • 您必须在与 linux 兼容的文件系统上构建库。然后,如果您无法共享该文件系统,只需将 lib 复制到 Windows 共享。
        • 实际上我只需要在 windows 中构建可以在 linux 上运行的开放 cv 库。所以基本上我需要与你所说的相反,即在 windows 中构建基于 linux 的库,然后将其复制到 linux。跨度>
        • 我认为您没有清楚地解释您想要做什么。我解释了为什么它不能编译,我认为如果你想真正编译它,你应该再次阅读我提出的解决方案。
        • 您无法在 Windows 上编译 Linux 库。不仅如此,通常你甚至不应该在与你想要的 Linux 发行版不同的 Linux 发行版上编译 linux 库。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-05
        • 2016-02-28
        相关资源
        最近更新 更多