OVH Community, votre nouvel espace communautaire.

CGI-BIN avec gcc et g++ sur hébergement mutualisé Pro


Christo4Up
06/05/2016, 02h28
Salut tout le monde.
Pour terminer sur ce topic, au cas où d'autre serais intéressé (recherche Google comme moi avant ce topic), j'ai réussi à compiler en gcc 5.3 et à exécuter le tout sur mon mutualisé pro.
L'ensemble des fichiers de tests sont sur mon GitHub : https://github.com/ChristopherSonntag/code-cgi-bin

Aussi, à savoir que j'ai utilisé une machine virtuelle avec UbuntuServer-16 (Xenial Xerus) en i386.
Afin que le compilé soit compatible, il faut utiliser la commande « -static-libstdc++ » lors d'une compilation en « -std=c++14 » sinon le mutu pro d’OVH va râler, ne pas oublier de faire des "chmod +x" sur les CGI-BIN concernées. Voir ci-dessous.


---- ssh root@ubuntu-16-virtualdesktop ----
Code:
root@debian-virtual-desktop: ~$ gcc -static-libstdc++ -o gcc-5-test.cgi gcc-5-test.cpp -std=c++14
---- ssh user@ssh2.90.ha.ovh.net ----
Code:
user@ssh1.90.ha.ovh.net ~$ chmod +x *.cgi

user@ssh1.90.ha.ovh.net ~$ ./gcc-5-test.cgi
Content-type:text/html



CGI Program CPP-14


CGI Program CPP-14

Test regex integer :(\+|-)?[[:digit:]]+

  • HipHop=false
  • 123=true
  • 456=true
  • 456.45=false
  • 789,79=false
  • Hip456=false
  • 123Hop=false

STDIN:

no stdin

end


PS : si un modérateur peut valider le topic, je ne trouve pas où cela se fait, Merci.

Bien à vous,
Christophe.

Christo4Up
05/05/2016, 03h48
Bonjour tout le monde,
Ça y est j’ai trouvé le problème.

Il semble que l’hébergement mutualisé pro soit en architecture i386, cela malgré les informations présente avec « cat /proc/version » et « uname –a », pourtant le mutualisé indiqué bien x86_64, voir ci-dessous.
---- ssh user@ssh2.90.ha.ovh.net ----
Code:
user@ssh1.90.ha.ovh.net ~$ cat /proc/version
Linux version 3.14.51-grsec-hosting-3.14-grsec-ipv6-64-vps (pbuser@buildbot.ci.ha.ovh.net) (gcc version 4.4.5 (Debian 4.4.5-8) ) #1SMP Mon Sep 28 15:15:44 UTC 2015

user@ssh1.90.ha.ovh.net ~$ uname -a
Linux ssh1.90.ha.ovh.net 3.14.51-grsec-hosting-3.14-grsec-ipv6-64-vps #1 SMP Mon Sep 28 15:15:44 UTC 2015 x86_64 GNU/Linux
Pour résoudre ce problème j’ai pensé à regarder le compilé php présent sur mon mutu, voir ci-dessous.
Et il semble que les binaires soit compiler en « elf32-i386 »
---- ssh user@ssh2.90.ha.ovh.net ----
Code:
user@ssh1.90.ha.ovh.net ~$ objdump -a /usr/local/php5.6/bin/php
/usr/local/php5.6/bin/php:     file format elf32-i386
J’ai donc réinstallé une machine virtuelle Debian 6.0.10 en i386. Ainsi j’ai pu compiler avec gcc-4.4.5.
J’essaierai avec gcc-5.2.0 dès qu’il sera compilé sur ma machine virtuelle Debian.

Bien à vous,
Christophe.

Christo4Up
05/05/2016, 00h04
Bonjour tout le monde,
Depuis quelques jours j’essaie de compiler en C et C++ sur mon hébergement pro afin de faire du CGI-BIN, question de performances et de connaissance en C .

Conformément à mon offre pro, il est normalement possible de programmer en langage C, voir :
https://www.ovh.com/fr/hebergement-w...gement-pro.xml -> Langages et bases de données.
Cependant, depuis la console SSH, le compilateur gcc n'est pas disponible, cela va de même pour l'application make et g++.

J’ai essayé les commandes ci-dessous, qui fonctionnent chez moi en CGI-BIN, cepedant rien y fait chez OVH.
Les fichiers htaccess, C/C++ sont accessible sur GitHub : https://github.com/ChristopherSonntag/code-cgi-bin
---- ssh user@ssh2.90.ha.ovh.net ----
Code:
user@ssh1.90.ha.ovh.net /home/user/www/cgi $ ls -a
.   .git            .gitignore  Makefile           helloworld-c.c      info-0x.cpp  info_form.html
..  .gitattributes  .htaccess   README-COMPILE.md  helloworld-cpp.cpp  info.cpp

user@ssh1.90.ha.ovh.net /home/user/www/cgi $ gcc -o helloworld-c.cgi helloworld-c.c
-ovh_ssh: gcc : commande introuvable

user@ssh1.90.ha.ovh.net /home/user/www/cgi $ g++ -o helloworld-cpp.cgi helloworld-cpp.cpp
-ovh_ssh: g++ : commande introuvable

user@ssh1.90.ha.ovh.net /home/user/www/cgi $ make
-ovh_ssh: make : commande introuvable
Alors, j’ai compilé des CGI-BIN sous différentes version de linux (debian-4.0r9, debian-6.0.10, debian-8.4.0) en machine virtuel pour ensuite essayer de les exécuter sur mon mutualisé mais rien y fait, voir ci-dessous exemple en ssh.
Aussi j’ai des « Internal Server Error » sur les pages internet de mon serveur OVH des divers compilés pour par exemple la page …/cgi/helloworld-c.cgi
À savoir que tout cela fonctionne chez moi en local.
---- ssh user@ssh2.90.ha.ovh.net ----
Code:
user@ssh1.90.ha.ovh.net /home/user/www/cgi $ chmod +x helloworld-c.cgi

user@ssh1.90.ha.ovh.net /home/user/www/cgi $ . ./helloworld-c.cgi
-ovh_ssh: .: ./helloworld-c.cgi : fichier binaire impossible à lancer
OVH aurait peut-être une image de leur installation à fournir ? Voir ci-dessous la version du kernel du mutualisé.
---- ssh user@ssh2.90.ha.ovh.net ----
Code:
user@ssh1.90.ha.ovh.net ~$ cat /proc/version
Linux version 3.14.51-grsec-hosting-3.14-grsec-ipv6-64-vps (pbuser@buildbot.ci.ha.ovh.net) (gcc version 4.4.5 (Debian 4.4.5-8) ) #1SMP Mon Sep 28 15:15:44 UTC 2015
Je continue mes efforts. J’essaie de changer mon kernel en linux-4.4.5 de mon Debian (machine virtuel). Il semblerait qu’il soit actuellement en 4.3.5, voir ci-dessous.
---- ssh root@debian-virtual-desktop ----
Code:
root@debian-virtual-desktop: ~$  cat /proc/version 
Linux version 2.6.32-5-amd64 (Debian 2.6.32-48squeeze6) (jmm@debian.org) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Tue May 13 16:34:35 UTC 2014
Je vous remercie par avance de votre aide, aussi veuillez excuser mes légères fautes d’orthographes.
Bien à vous,
Christophe.