IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Systèmes de compilation Discussion :

Difficulté de compilation en mode static ( Cross plateform )


Sujet :

Systèmes de compilation

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 3
    Par défaut Difficulté de compilation en mode static ( Cross plateform )
    Bonjour a tous,


    Je développe actuellement un utilitaire qui a comme objectif d'aller récupérer une information sur un serveur pour appliquer le traitement associé sur le poste ou il a été déposé.

    Pour être cross plateforme (PC : windows/mac, serveur : windows/mac/linux) je l'ai développé en C++.

    Pour des raisons de sécurité, les échanges sont en SSL avec du TLS 1.2.

    l'utilitaire fonctionne très bien et se compile sans erreurs sur les différents OS.

    Je voudrait que cet utilitaire soit autonome et ne dépende d'aucuns autres composants.

    C'est a ce stade que je bloque aujourd'hui :

    Je choisi de mettre l'option -static a la compilation pour qu'il embarque dans le programme les bibliothèques ssl.

    Au vue de la taille du programme, il semble qu'il l'embarque bien mais a l'execution, il recherche toujours les bibliothèques ssl.

    exemple windows dans WinGW :

    si je compile en dynamique , l'utilitaire fait 75Ko sur disque

    lorsque je l'execute, il me demande les bibliothèques libcrypto-1_1.dll et libssl-1_1.dll

    Si je le compile en static, il passe à 835 Ko.

    ET lorsque je l'execute, il me demande également les bibliothèques.

    voici la ligne que l'utilise pour la compilation.

    g++ -Os -static -t --verbose -g3 -pie -MMD -MP
    -I "C:\OpenSSL-Win32\include"
    ..\Cyb\ctx_ssl.cpp ..\Cyb\src\resources\resources.res
    -o ..\Cyb\ctx_ssl.exe
    -lws2_32 C:\OpenSSL-Win32\lib\MinGW\libcrypto-1_1.a C:\OpenSSL-Win32\lib\MinGW\libssl-1_1.a

    Si je pose les dll dans le dossier de l'exe, cela marche!

    exemple mac

    meme constat : il me demande /usr/local/lib/libssl.1.1.dylib et libcrypto.1.1.dylib

    ligne de compilation :

    gcc -I "../Cyb/openssl/include/" ./ctx_ssl.cpp -o ./ctx_ssl
    /Users/mac/Desktop/Cyb/openssl/libssl.a
    /Users/mac/Desktop/Cyb/openssl/libcrypto.a
    -L "../Cyb/openssl/" -lssl -lcrypto

    j'ai creusé la doc de G++ mais je n e trouve pas l'option qui permettrait de forcer.

    je peu vous fournir le source de base pour tester.

    Merci d'avance pour votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 37
    Par défaut
    Es-tu sûr que les libcrypto-1_1.a et libssl-1_1.a sont aussi compilées en static ? (tu ne l'as pas précisé dans ta question)

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 3
    Par défaut Livrables OpenSSL
    Merci pour ton retour,

    j'utilise directement ces 2 fichiers livrés avec OpenSSL,

    ( 1 ) comment puis je savoir s'ils sont compilés en static?
    ( 2 ) faut-il que je recompile OpenSSL?

    sous windows ils sont livrés dans le dossier : lib\MinGW

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 37
    Par défaut
    (1) Tel quel avec juste le fichier.a, je ne sais pas si on peut distinguer facilement une lib dynamique d'une statique (si on a les deux versions sous les yeux, la taille peut suffire comme tu l'as mentionné).

    (2) L'organisme en charge d'OpenSSL ne fourni que les sources, donc si tu as une librairie compilée sous la main c'est qu'elle provient d'un tiers.
    A titre indicatif, le wiki officiel indique certains fournisseurs pour les obtenir, avec parfois la mention static/dynamic: https://wiki.openssl.org/index.php/Binaries
    En revanche il ne semble pas mentionner de fournisseur pour une version macOs, il va falloir que tu cherches un peu plus sur le net ou que tu recompiles toi-même, en effet.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 3
    Par défaut Nouveau test OpenSSL static
    Bonjour,

    Suite a tes conseils,

    j'ai téléchargé eun version qui indique le mode static

    https://bintray.com/vszakats/generic/openssl

    j'ai adapté le script de compilation

    g++ -t --verbose -g0 -pie -MMD -MP -static -march=i586
    -I "C:\openssl-1.1.0h-win32-mingw\include"
    ..\CybConsole\ctx_ssl.cpp
    ..\CybConsole\src\resources\resources.res
    -o ..\CybConsole\ctx_ssl
    -L "C:\openssl-1.1.0h-win32-mingw\lib" -lws2_32 C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a C:\openssl-1.1.0h-win32-mingw\lib\libcrypto.dll.a

    dans le log ont vois bien qu'il utilise biens les lib que je souhaite

    (C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a)d000388.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a)d000387.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a)d000337.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a)d000310.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a)d000307.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a)d000229.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a)d000223.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a)d000218.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a)d000215.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a)d000150.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a)d000095.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a)d000070.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a)d000018.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a)d000000.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libssl.dll.a)d000402.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libcrypto.dll.a)d002196.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libcrypto.dll.a)d000000.o
    (C:\openssl-1.1.0h-win32-mingw\lib\libcrypto.dll.a)d004039.o

    ca compile nickel

    mais j'ai toujours les dépendances ssl externes!

    Je ne suis pas le seul a développer en C++ avec SSL.

    C'est désespérant!

    Avez vous une idée?????

    Merci d'avance

    Pour Mac, je pense avoir trouvé ( configure -static a l'installation d'openssl) mais ma priorité est sur PC.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 37
    Par défaut
    Sous Windows, un fichier dll est la composante binaire d'une bibliothèque dynamique, donc d'instinct je linkerais plutôt libssl.a que libssl.dll.a pour cibler la version statique (pareil pour libcrypto évidemment).

Discussions similaires

  1. Problème pour compiler en mode static
    Par tifil dans le forum Débuter
    Réponses: 9
    Dernier message: 11/12/2011, 16h23
  2. [Free Pascal] Compiler Free Pascal pour cross-compiler vers une autre plateforme
    Par petitprince dans le forum Free Pascal
    Réponses: 5
    Dernier message: 05/10/2009, 18h48
  3. Screenshoot cross plateform
    Par ChameauFou dans le forum C
    Réponses: 4
    Dernier message: 06/06/2007, 11h18
  4. Réponses: 12
    Dernier message: 05/04/2007, 16h18
  5. Réponses: 1
    Dernier message: 02/02/2006, 12h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo