Forums : XPCom

Aller à la discussion :  Plus récente Plus ancienne

# [Résolution en cours] Visual C++ 2003 Toolkit et Cygwin

Envoyé par : Geceo

Date : 15/06/2005 19:58

Bonjour,

Je suis en train d'essayer de recompiler le composant XPCOM de XUL Music

Note : pour récupérer ce répertoire, vous pouvez utiliser :

wget -r -L -x https://updates.simosoftware.com/repos/xulmusic/

J'ai cru lire quelque part que la compilation d'un composant XPCOM sous Windows ne fonctionnait qu'avec Visual C++ pour l'instant. J'ai donc téléchargé la version gratuite du compilateur de Microsoft.

Pour compiler le composant XPCOM de XUL Music, j'ai ensuite installé Cygwin et les sources de Mozilla, je vous passe les détails. Je suis actuellement en train d'essayer de compiler XulRunner avec :

./configure --enable-app=xulrunner

mais ça plante sur le test du compilateur, avec la fameuse erreur

C compiler cannot create executables

J'ai vérifié que "cl.exe" était bien dans mon PATH, et il y est. Que puis-je faire?

Je précise que si je fais un export CC=gcc; export CXX=g++, ça plante plus loin, il me dit que MOZ_TOOLS n'est pas défini.

Donc :

  1. Est-il exact qu'on ne peut pas compiler du XPCOM avec g++ sous Windows/Cygwin?
  2. Si oui, comment puis-je éviter l'erreur renvoyée par "configure"?
  3. Accessoirement, que faut-il mettre dans la variable MOZ_TOOLS?

Merci de votre aide,

Geceo, futur dieu de XUL, mais pour l'instant super débutant... ;)

# Re: Visual C++ 2003 Toolkit, Cygwin et "cannot create executable"

Envoyé par : Geceo

Date : 16/06/2005 10:25

Bon,

Une bonne nuit de sommeil, et ça repart! :) Il fallait lancer d'abord le fichier "vcvars32.bat" qui se trouve dans le répertoire d'installation de "Visual C++ 2003 Toolkit" (ou passer par le raccourci dans le menu), puis, dans cette fenêtre DOS, lancer Cygwin (avec "cygwin.bat" qui est dans le répertoire d'installation de Cygwin).

Si on fait l'inverse (lancer "vcvars32.bat" à partir de Cygwin), ça ne fonctionne pas. Probablement parce que quand on lance "vcvars32.bat" dans Cygwin, il ouvre un interpréteur DOS à l'intérieur de Bash et que cet interpréteur se referme aussitôt sans que Cygwin n'ait récupéré les variables d'environnement qui vont bien.

Problème : il plante un peu plus loin en me disant que la version du "Linker" n'est pas la même que celle du compilateur.

Solution : cet andouille de configure allait chercher le /usr/bin/link de GNU. Il faut donc définir la variable d'environnement LD vers le linker de MS, mais ce chemin ne doit pas contenir d'espaces. J'ai donc réinstallé le Toolkit de chez MS dans C:\msvs. Ensuite avant de lancer le configure --enable-app=xulrunner dans Cygwin, j'ai fait un export LD=/cygdrive/c/msvs/bin/link.exe et c'est passé.

Problème : il plante encore juste après, sous prétexte qu'il ne trouve pas "midl".

Solution : installer le Microsoft Platform SDK pour obtenir le fameux "midl.exe" (il est dans la catégorie "Tools"). Je l'ai installé dans C:\mssdk et j'ai ajouté le répertoire c:\mssdk\bin dans le PATH de Windows. Maintenant "configure" se plaint que ce n'est pas la bonne version, j'ai installé la version 6.00.0366 alors qu'il s'attendait à la 6.00.0361. J'ai donc modifié le "configure" pour que le test passe.

Problème : il plante ensuite sur MOZ_TOOLS.

Solution : récupérer wintools.zip et la dézipper dans un répertoire (autre que celui de Cygwin, j'ai choisi D:\moz_tools). Ajouter ensuite la variable d'environnement MOZ_TOOLS pour qu'elle indique le chemin vers le sous-répertoire "windows". Ajouter %MOZ_TOOLS%/bin dans le PATH.

Problème : il plante ensuite à cause de l'absence de "pkg-config".

Solution : installer "pkg-config" dans Cygwin (dans la catégorie "Devel"). "configure" plante après au sujet de Gtk2 puis de Xft. Comme je suis sous Windows, j'imagine qu'il n'y a besoin d'aucun des deux. J'ai donc retiré de mon fichier "~/.mozconfig" les lignes :

ac_add_options --enable-default-toolkit=gtk2
ac_add_options --enable-xft

Cette fois c'est bon, le ./configure --enable-app=xulrunner va jusqu'au bout.

Prochaine étape : le "make".

Geceo

# Re: [Résolution en cours] Visual C++ 2003 Toolkit et Cygwin

Envoyé par : vpedretti

Date : 23/06/2005 01:50

La Compilation

La compilation se passe très bien...;) à part :

  • xpidl.exe qui crash.

Solution : mettre c:\vc71\bin au début de la variable d'environnement "path" (c:\vc71\bin = glib + xpidl dll)

  • ../../dist\include\xpcom\nsIConsoleService.h(63) : error C2061: erreur de syntaxe : identificateur 'nsIConsoleListener'

Effectivement, le fichier nsIConsoleListener.h a un taille nulle! il semblerait que sa génération à partir de l'idl correspondant, soit défectueuse. Après avoir cherché sur le web, j'ai trouvé des utilisateurs avec le même problème, mais la solution n'est jamais vraiment explicité. Il semblerait que cela soit un problème de version de xpidl.exe.... impossible de remettre la main sur une version plus ancienne de xpidl.c Si quelqu'un a une idée, je suis preneur!

Vincent.

# Re: [Résolution en cours] Visual C++ 2003 Toolkit et Cygwin

Envoyé par : Geceo

Date : 28/06/2005 10:14

Salut Vincent,

Je suis content de voir qu'il y a quelqu'un d'autre qui fait les mêmes trucs que moi en ce moment. :-)

Je n'ai pas complété mon message pour le "make" car y'a vraiment trop de détails à prendre en compte, entre les différents SDKs à installer (avec les bonnes options) et le PATH a compléter dans le bon ordre, c'est vraiment une grosse galère...

À ce jour, mon "make" plante pendant l'édition des liens dans le répertoire "mozilla/directory/c-sdk/ldap/libraries/libldap". Il me dit qu'il ne trouve pas "odbc32.lib" ("fatal error LNK1181: cannot open input file 'odbc32.lib'"). D'après ce que j'ai vu à divers endroits (par exemple pour la compilation de Blender dans le "Step 8") ce fichier n'est disponible qu'avec la version payante du compilateur. Comme ça m'étonnerait que XulRunner ait vraiment besoin d'accéder à des bases de données, je cherche comment je peux éviter cette erreur... Si tu as une idée...

MAJ : j'ai modifié mon ".mozconfig" et depuis que j'ai mis ça :

export MOZILLA_OFFICIAL=1
mk_add_options MOZILLA_OFFICIAL=1
mk_add_options MOZ_CO_PROJECT=xulrunner
ac_add_options --enable-application=xulrunner
#ac_add_options --disable-debug
#ac_add_options --disable-tests
#ac_add_options --disable-optimize
#ac_add_options --disable-freetype2

# enable minimal profile support
ac_add_options --disable-profilesharing
ac_add_options --disable-profilelocking
ac_add_options --enable-single-profile

# disable unused features
ac_add_options --disable-accessibility
ac_add_options --disable-composer
ac_add_options --enable-plaintext-editor-only
ac_add_options --disable-mailnews
ac_add_options --disable-ldap
ac_add_options --disable-postscript
ac_add_options --disable-mathml
ac_add_options --disable-jsd
ac_add_options --disable-installer
ac_add_options --disable-xprint
ac_add_options --enable-default-toolkit=windows

# disable debug, logging and tests
ac_add_options --disable-debug
ac_add_options --disable-dtd-debug
ac_add_options --disable-logging
ac_add_options --disable-tests

# build crypto module
ac_add_options --enable-crypto

# code generation options
ac_add_options --enable-optimize='-O2p -GLA'
ac_add_options --enable-strip
ac_add_options --enable-strip-libs
LDFLAGS=-LTCG

# enable static build
ac_add_options --disable-shared
ac_add_options --enable-static

# extensions list
ac_add_options --enable-extensions=cookie,xml-rpc,xmlextras,p3p,universalchardet,wallet,webservices,negotiateauth,transformiix

il ne m'embête plus avec son "odbc32.lib". Par contre il plante avec : fatal error C1048: unknown option '6' in '-G6'

Je commence à me dire que Java n'est pas une si mauvaise solution... :-(

Geceo

# Re: [Résolution en cours] Visual C++ 2003 Toolkit et Cygwin

Envoyé par : Geceo

Date : 28/06/2005 16:01

J'ai fait un "make clean", puis de nouveau mes :

./configure --enable-app=xulrunner
make

Incroyable, j'obtiens après un certain temps une boîte d'erreur Windows qui me dit :

xpidl.exe - Erreur d'application
L'instruction à "0x78468216" emploie l'adresse mémoire "0x00000010". La mémoire ne peut pas être "written".

J'ai testé la mémoire avec MemTest86, il ne détecte pas d'erreur. Je ne sais vraiment pas quoi faire...

Grégoire

# Re: [Résolution en cours] Visual C++ 2003 Toolkit et Cygwin

Envoyé par : Utilisateur anonyme

Date : 15/07/2005 13:27

J'ai eu le même problème avec Visual C++ 7 complet. Je n'ai pas réussi à le résoudre, cela dit.

Avec la version gratuite, je ne passe même pas l'étape du configure :(

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.