web-dev-qa-db-fra.com

Comment puis-je faire fonctionner un programme (en utilisant SDL) construit sur Ubuntu sur d'autres systèmes?

J'écris un programme qui utilise OpenAL. Quand je fais un lien contre (j'utilise CMake), il fait également un lien contre libpulse - PulseAudio. Il en résulte que le binaire ne fonctionne pas sur d'autres systèmes. Puis-je en quelque sorte ne pas établir un lien avec PulseAudio et continuer à utiliser OpenAL sur Ubuntu?

Edit: Je viens de comprendre quelque chose: ce n'est pas OpenAL qui fait glisser PulseAudio, c'est SDL. Y a-t-il quelque chose que je puisse faire à ce sujet?

4
halifar

À propos du SDL pulseaudio, vous pouvez simplement installer libsdl1.2debian-alsa, il supprimera la version pa-sdl et établira un lien avec les bibliothèques ALSA. Néanmoins, vous êtes susceptible d'obtenir d'autres compatibilités liées aux binaires/bibliothèques comme le dv3500ea mentionné. Une approche courante pour éviter les problèmes de dépendance liés au système consiste à utiliser la liaison statique. Cela rendra les binaires beaucoup plus volumineux car ils incluent le code requis des bibliothèques.

Pour plus d'informations sur la vérification des liens statiques: http://wiki.linuxquestions.org/wiki/Static_linking

1
João Pinto

Générez le binaire séparément sur chaque plate-forme pour laquelle vous souhaitez fournir des packages binaires et assurez-vous de distribuer le code source afin que les utilisateurs des autres plates-formes puissent le créer eux-mêmes.

Notez que Linux se concentre sur la compatibilité des sources plutôt que sur la compatibilité binaire. La plupart des distributions ne sont pas compatibles binaires entre elles (pas même Ubuntu et Debian ne sont complètement compatibles * ).

Il s'agit d'une question quelque peu connexe: Techniquement parlant, qu'est-ce qui différencie Ubuntu des autres distributions Linux?

2
dv3500ea