J'ai besoin de distribuer un fichier binaire pour GNU / Linux ... P>
sur Windows, je pourrais exécuter un utilitaire nommé "DEPEND.EXE" qui vérifierait toutes les dépendances que le fichier a, donc je pourrais savoir quoi expédier avec le fichier, comment je fais la même chose avec GNU / Linux ? p>
Clarification: Je ne voulais pas dire littéralement le distribuer (à moins que ce ne soit une certaine bibliothèque qui ne génère jamais de problèmes, comme ... libthatonlymysoftwareUuseversion0.00042895.08421tnoonehas un peu comme si les utilisateurs auraient besoin de ...) P>
4 Réponses :
sur Linux, vous pouvez essayer LDD. P>
Généralement, vous construirez un binaire Linux pour une distribution particulière de Linux et vous fourniriez simplement votre propre binaire et obliger les utilisateurs à installer les autres pièces. Si vous utilisez un système utilisant des packages RPM, vous souhaitez lire sur la manière de construire des RPM, si vous utilisez une variante Debian, vous souhaitez voir comment les packages binaires APT sont construits.
Si vous souhaitez vérifier manuellement quelles bibliothèques votre binaire relient ensuite: p> vous donnera une liste de bibliothèques liées pour un binaire lié dynamique. Mais vous ne voulez pas distribuer la plupart d'entre eux, car il est comme essayer de redistribuer System32.dll ou Windows.dll Bad Bad Bad IDEA: ^) P> P>
Quels sont les system32.dll code> et windows.dll code>? : P
@Delan: une sorte de logiciel malveillant, je pense;)
L'utilitaire que vous recherchez sur Linux est appelé Distribution des versions de bibliothèques utilisant des schémas ad-hoc va seulement poser des problèmes aux utilisateurs finaux (quelque chose d'appartienne à DLL enfer sur Windows). Ils peuvent se retrouver avec des conflits, des crashs et éventuellement des trous de sécurité. P>
Vous pouvez utiliser ldd code>. Cependant, vos utilisateurs sont-ils favorables et ne pensez pas à la distribution de bibliothèques avec votre programme. Exiger que vos utilisateurs installent les conditions préalables via les canaux appropriés. Ou, mieux encore, emballer votre logiciel à l'aide d'un système d'installation approprié comme RPM, APT ou PORTAGE (je suppose que vous ne pouvez pas utiliser la distribution de la source et les autotools); Cela permet au système de gestion des packages de résoudre automatiquement les dépendances en tirant dans les bibliothèques requises. P>
ldd code> pour déterminer quelles bibliothèques votre binaire dépendent de manière à ce que vous puissiez configurer les dépendances appropriées lorsque vous effectuez vos packages (certains packagers, comme RPM, faites-le pour vous). . P>
LDD CODE> vous dit uniquement les bibliothèques dont vous avez besoin, il ne vous dit pas quels paquets de ces bibliothèques - Je ne connais pas un moyen simple de trouver la liste des colis.
Si votre exécutable dépend de certaines bibliothèques de packages Debian et que vous souhaitez découvrir quels packages ils sont, vous pouvez utiliser quelque chose comme ceci:
dpkg --search `readelf -d $PATH_TO_EXECUTABLE | egrep --only-matching '[^[]+\.so\.[^]]'` | egrep --only-matching '^[^ :]+' | sort | uniq