2010-01-21 32 views
1

J'essaie de compiler un simple programme C++ pour l'exécuter dans la fenêtre de la console ESXi 3.5. Il semble que je suis en train de lier de mauvaises bibliothèques ... Y a-t-il une configuration décrite quelque part - quelle version de G ++ et de bibliothèques dois-je utiliser pour le faire?Compilez le code C++ pour l'exécuter sur ESXi 3.5

Répondre

1

Voici comment j'ai résolu le problème. Je ne suit pour compiler:

  1. Compilé avec gcc sous ubuntu
  2. Ran ldd sur exécutables
  3. toutes les bibliothèques Copié qui se sont présentés comme des dépendances à SubFolder ESXi-3.5-lib. Dans mon cas, ils étaient:

    ld-linux.so.2 
    libc.so.6 
    libgcc_s.so.1 
    libm.so.6 
    libstdc++.so.5 
    
  4. Ajouté suivant les commutateurs à gcc:

    • -nodefaultlibs (pour ne pas tenter de créer un lien avec libs par défaut)
    • -lc (empêché erreur de lien dans certains crt bibliothèque)
    • -fno-stack-protecteur (a empêché une autre erreur, une autre fonction était absent)

était ma commande ci-dessous build final:

g++ file1.cpp file2.cpp file3.cpp -o output-biinary-file-name \ 
    ESXi-3.5-lib/ld-linux.so.2 ESXi-3.5-lib/libc.so.6 ESXi-3.5-lib/libgcc_s.so.1\ 
    ESXi-3.5-lib/libm.so.6 ESXi-3.5-lib/libstdc++.so.5 \ 
    -nodefaultlibs -lc -m32 -fno-stack-protector