2017-10-11 5 views
0

Bonjour lorsque je compile mon application wxWidgets sur linux, la construction se passe bien. Je peux même l'exécuter et ça fonctionne comme prévu. Quand je copie le fichier binaire à un autre ordinateur Ubuntu et essayer de l'exécuter je reçois cette erreur:Problème de Wxwidgets exécutant un fichier binaire sur un autre ordinateur

./app2: error while loading shared libraries: libwx_baseu_unofficial-3.1.so.0: cannot open shared object file: No such file or directory 

Même lors de la copie de la lib dans je reçois toujours un problème. Pourquoi dépend-il des bibliothèques externes et comment puis-je résoudre ce problème car je ne veux pas que d'autres ordinateurs exigent que cette bibliothèque soit installée. Je suppose que je pourrais essayer de lier statiquement, mais d'autres recommandent de ne pas le faire.

Merci, Dan

Répondre

0

Vous devez installer le runtime complet wxWidgets/bibliothèque partagée sur toute machine vous copiez votre binaire sur. C'est tout l'intérêt d'utiliser aptitude - chaque paquet binaire a une liste de dépendances qui sont installées avec lui.

Pour surmonter cela, vous devez lier statiquement votre binaire. Vous utilisez actuellement un lien partagé, qui repose sur, comme vous le constatez, les bibliothèques externes. ".so" signifie un objet partagé. Vous devrez faire un lien avec les bibliothèques d'archives statiques, se terminant souvent par ".a". Typiquement, les paquets de développement fournis par aptitude ne les fournissent pas, donc vous devrez probablement compiler wxWidgets vous-même pour les fournir. Assurez-vous également de lier et de compiler statiquement toutes les dépendances en aval de wxWidgets. C'est le principal inconvénient de la liaison statique. Vous pouvez également regarder quelque chose comme Holy Build Box.

+0

Merci pour votre réponse. Je suppose que dans le fichier .deb je peux exiger wxwidgets comme une dépendance qui résoudrait le problème? –

+0

Il doit simplement s'assurer que la version que vous avez compilée est également définie dans le contrôle de dépendance. –

+0

J'ai construit lié avec une version compilée personnalisée de wxWidgets. Non modifié mais les libs qu'il recherche sont "non officiels". J'ai copié les librairies "non officielles" sur un autre PC Ubuntu mais le système dit toujours que la bibliothèque n'a pas pu être trouvée? –