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

wxWidgets Discussion :

Segfault en compilant avec Code::Blocks sous Windows


Sujet :

wxWidgets

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 81
    Par défaut Segfault en compilant avec Code::Blocks sous Windows
    Bonjour,
    voulant m'initier à wxWidgets, j'essaie de compiler l'exemple minimal du dossier sample. En utilisant le makefile "makefile.gcc", la compilation s'effectue sans problème et l'exécution aussi. Quand j'utilise Code::Blocks, la compilation fonctionne sans erreurs mais l’exécution génère une erreur de segmentation. Je pense n'avoir pas configuré suffisamment bien le projet, mais je n'arrive pas à déterminer ce qui manque.

    Pour infos, j'ai compilé wxWidgets avec: mingw32-make -f makefile.gcc BUILD=release SHARED=1 UNICODE=1 et de même pour l'exemple minimal.
    Voici le fichier minimal.cbp (en fin de post), gérant la compilation.

    J'ai aussi essayé avec d'autres codes trouvés sur internet (en modifiant le makefile) et j'ai le même problème.

    Avez-vous déjà rencontré cela et savez-vous le régler ?

    Merci,

    Simac

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <CodeBlocks_project_file>
    	<FileVersion major="1" minor="6" />
    	<Project>
    		<Option title="minimal" />
    		<Option pch_mode="2" />
    		<Option compiler="gcc" />
    		<Build>
    			<Target title="Release">
    				<Option output="bin/Release/minimal" prefix_auto="1" extension_auto="1" />
    				<Option object_output="obj/Release/" />
    				<Option type="0" />
    				<Option compiler="gcc" />
    				<Option projectCompilerOptionsRelation="2" />
    				<Compiler>
    					<Add option="-O2" />
    					<Add directory="C:/wxWidgets-3.0.3/lib/gcc_dll/mswu" />
    				</Compiler>
    				<Linker>
    					<Add option="-s" />
    					<Add library="libwxmsw30u_core.a" />
    					<Add library="libwxbase30u.a" />
    				</Linker>
    			</Target>
    		</Build>
    		<Compiler>
    			<Add option="-Wall" />
    			<Add option="-pipe" />
    			<Add option="-mthreads" />
    			<Add option="-finput-charset=iso-8859-15" />
    			<Add option="-D__GNUWIN32__" />
    			<Add option="-D__WXMSW__" />
    			<Add option="-DWXUSINGDLL" />
    			<Add option="-DwxUSE_UNICODE" />
    			<Add option="-D_UNICODE_" />
    			<Add directory="C:/wxWidgets-3.0.3/include" />
    		</Compiler>
    		<Linker>
    			<Add library="libkernel32.a" />
    			<Add library="libuser32.a" />
    			<Add library="libwinspool.a" />
    			<Add library="libcomdlg32.a" />
    			<Add directory="C:/wxWidgets-3.0.3/lib/gcc_dll" />
    		</Linker>
    		<Unit filename="../sample.rc">
    			<Option compilerVar="WINDRES" />
    		</Unit>
    		<Unit filename="minimal.cpp" />
    		<Extensions>
    			<code_completion />
    			<envvars />
    			<debugger />
    			<lib_finder disable_auto="1" />
    		</Extensions>
    	</Project>
    </CodeBlocks_project_file>

  2. #2
    Membre chevronné Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Par défaut
    Bonjour.

    Je ne pense pas que le problème vienne de la configuration de Code::Blocks.

    J'ai fait le test (en modifiant les chemins d'accès aux libs pour que ça corresponde à mon installation) et ça a fonctionné.

    Par contre, je pense que tu utilises une version un peu obsolète de Code::Blocks (une version "officielle" avec installateur et éventuellement MinGW intégré).
    Parce que moi il a fallu que je rajoute un répertoire pour le compilateur de ressources sans quoi la compilation du fichier ".rc" échouait.

    Je te conseille d'essayer d'utiliser une version "Nightly-Build" de Code::Blocks (regarde sur le forum officiel, tu trouveras facilement la dernière).
    Tu devrais pouvoir remplacer ta version actuelle par une version plus récente.

    @+
    Xav'

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 81
    Par défaut
    Ok merci, je vais essayer la nightly-build (j'avais bien la dernière version officielle: 16.01).

    En passant, j'ai compilé le projet en utilisant le makefile à partir de Code::Blocks (dans les options de projet) et le log du compilateur est exactement le même, au caractère près, que lorsque je lance le makefile à la main. Pourtant, l’exécutable résultant est totalement différent: avec Code::Blocks il pèse 1Mo (et plante) alors qu'à la main il fait 3Mo (et marche). J'utilise pour les deux MinGW livré avec Code::Blocks.

    Je vais installer la nighty-build, et je te tiens au courant.

    Simac

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 81
    Par défaut
    Bon, j'ai utilisé la version nightly-build et malheureusement, rien a changé. Par contre je n'ai pas modifié le compilateur (je ne sais pas si il existe une version plus récente de MinGW que celle utilisant GCC 4.9 ; j'ai vu que GCC 7.1 est sorti, mais il ne me semble pas qu'il y ai de MinGW correspondant).
    Je continue les recherches...

  5. #5
    Membre chevronné Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Par défaut
    Est-ce qu'à tout hasard il se pourrait que tu aies 2 versions de MinGW différentes qui trainent ?
    C'est souvent le cas quand par exemple tu as une version de Qt installée.

    Quand tu compiles avec le Makefile directement sans passer par Code::Blocks, je suppose que tu ouvres simplement une fenêtre "invite de commandes".
    Dans ce cas, regardes si la version de gcc correspond à celle installée avec Code::Blocks.

    Ça pourrait expliquer les problèmes que tu rencontres.

    Il y a autre chose qui est inquiétant : la grosse différence entre les deux exécutables compilés depuis le Makefile.
    Puisque apparement tu utilises une version "shared" des libs, il n'est pas normal d'obtenir un exe de 3Mo pour l'exemple minimal.
    Même 1Mo me paraît beaucoup (mais je n'ai pas de Windows ouvert sous la main actuellement : je ferai le test demain pour voir quelle taille j'obtiens).

    Je te tiens au courant.

    @+
    Xav'

  6. #6
    Membre chevronné Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Par défaut
    Bon : je viens de faire quelques vérifications.

    Compilation avec le makefile fourni : 1.15Mo
    Compilation avec ton fichier projet Code::Blocks : 563Ko

    L'écart entre les deux vient du fait que le make file n'utilise pas l'option "-s" lors du link.
    Je l'ai rajouté manuellement et j'obtiens exactement la même taille (563ko).

    Comme j'utilise une version un peu viellotte de MinGW (la version 4.8.1-TDM), il est normal que j'obtienne un exécutable plus petit que toi, mais l'écart me paraît quand même trop important.

    @+
    Xav'

+ Répondre à la discussion
Cette discussion est résolue.

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