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
1
A
Répondre
1
Voici comment j'ai résolu le problème. Je ne suit pour compiler:
- Compilé avec gcc sous ubuntu
- Ran ldd sur exécutables
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
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