web-dev-qa-db-fra.com

Erreur de liaison lors de la tentative de compilation sur un lecteur partagé

J'essaie de compiler la bibliothèque OpenCV sur un lecteur partagé de mon système. J'ai été capable de configurer et de générer des makefiles avec succès en utilisant ces paramètres, mais lorsque j'essaie de compiler, j'obtiens l'erreur suivante:

Linking CXX shared library ../../lib/libopencv_core.so
CMake Error: cmake_symlink_library: System Error: Operation not permitted
CMake Error: cmake_symlink_library: System Error: Operation not permitted
make[2]: *** [lib/libopencv_core.so.2.4.3] Error 1
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
make: *** [all] Error 2

S'il vous plaît aider à résoudre. Je pense que cela peut être un problème avec les drapeaux de montage.

3
bubble

Cela se produit, car les systèmes de fichiers de type vfat ne prennent pas en charge les liens symboliques. Les drapeaux montés ne changeront pas cette situation.

Je ne connais pas bien CMake, mais je suppose que vous utilisez une sorte de règle dans votre fichier makefile qui dit à CMake de créer un lien symbolique vers lib/libopencv_core.so.2.4.3, qui échoue.

4
bender

J'ai rencontré le même problème, car je courais sur une instanciation de boîte virtuelle d'ubuntu (invité), mais dans un dossier partagé sur mon mac (hôte).

Comme les liens symboliques sont différents sur le mac, cmake a échoué. Déplacer le répertoire de construction dans un dossier uniquement Ubuntu (non partagé avec le Mac) a résolu le problème.

Morale de l'histoire: ne créez pas de dossiers partagés qui transcendent les plateformes.

1
arinmorf