Affichage des articles dont le libellé est Windows. Afficher tous les articles
Affichage des articles dont le libellé est Windows. Afficher tous les articles

31 janvier 2020

Restorer le boot de Windows après installation de CentOS

Il semble que dans certaines configurations RedHat et Centos n’aiment pas cohabiter sur la même machine avec Windows… En effet si sur une machine qui boote déjà sous Windows on installe en plus (Dual Boot) RH/Centos 7 ou 8 on risque de perdre l’option  pour booter sous Windows.

Heureusement il est facile de rattraper cela à la main.
Voici comment.

Depuis une session root exécuter ces 5 étapes:

1) Avec fdisk trouver la partition de boot

# fdisk -l
Device     Boot     Start        End   Sectors   Size Id Type
/dev/sda1  *         2048    1026047   1024000   500M  7 HPFS/NTFS/exFAT
/dev/sda2         1026048  501093039 500066992 238.5G  7 HPFS/NTFS/exFAT
/dev/sda3       501094400  503191551   2097152     1G 83 Linux
/dev/sda4       503191552 1000214527 497022976   237G  5 Extended
/dev/sda5       503193600 1000214527 497020928   237G 8e Linux LVM


(Il s'agit d'une table de partition  au format MBR)

Repérer la partition qui a une étoile (*) dans sa colonne Boot. Ici il s’agit de la partition mixte UEFI + CSM qui servait à booter  Windows, mais que RH/Centos a ignoré. (Il parait que Fedora n'a pas ce problème).

Ici c’est la partition sda1 (partition 1 du disque sda). Notez que cette partition est formatée en NTFS alors que pour du pur UEFI seul FAT32 est possible.

2) Avec blkid trouver l’identifiant de cette partition de boot

# blkid /dev/sda1
/dev/sda1: UUID="B4FC7F32FC7EEE4C" TYPE="ntfs" PARTUUID="646e83a4-01"

Noter la valeur de UUID (sans les quotes).  Ici c'est B4FC7F32FC7EEE4C

3) Modifier la configuration de grub2

# vim /etc/grub.d/grub40_custom

Ne surtout pas toucher aux 5 lignes déjà en place, et ajouter le menuentry comme indiqué ci-dessous.
Dans ce qui suit:
- hd0 c’est sda
- msdos1 c’est la partition 1
- Remplacer B4FC7F32FC7EEE4C  par le UUID de votre partition bootable affiché par blkid.

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "Windows 10" {
  insmod part_msdos
  insmod ntfs
  set root='(hd0,msdos1)'
  search --no-floppy --fs-uuid --set=root
B4FC7F32FC7EEE4C
  chainloader +1
}



4) Re-construite la configuration de grub :

# grub2-mkconfig -o /boot/grub2/grub.cfg


5) Rebooter

 # reboot

Vous devriez avoir une option de menu « Windows 10 » et vous devriez pouvoir booter sur Windows.

IMPORTANT:

Bien souvent les problèmes de ce type (OS installé mais non bootable) viennent de l'inadéquation entre 

- la configuration de la procédure de boot utilisée par le bios (Legacy ou UEFI+CSM ou UEFI)

- le partitionnement du disque (MBR ou GPT)

- le mode d’installation du nouvel l'OS (Legacy, UEFI), qui découle souvent de comment l'installateur a été démarré.

Les live CD linux sont alors très utiles pour analyser la configuration du disque.

16 janvier 2019

Débuter avec Windows Subsytem for Linux (WSL)

Débuter avec Windows Subsytem for Linux  (WSL)


Il faut bien comprendre que le but de Microsoft en proposant WSL est de faire bénéficier Windows des possibilités de Linux et non l’inverse. Il n’est pas question pour Microsoft d’aider les développeurs d’applications Linux mais seulement d’aider les développeurs d’applications Windows.

Au début WSL s’appelait  “Bash for Windows”. Tout est dit.

WSL n'est pas cygwin puisque pour qu'une application Linux fonctionne avec cygwin elle doit être re-compilée. Avec WSL c'est exactement l’application Linux, au bit prés, qui s’exécute sous Windows 10.

WSL est un simulateur du kernel Linux, pas un émulateur. Son impact cpu, mémoire et disque est bien plus faible qu'une machine virtuelle. Les deux systèmes partagent le même espace disque et les deux systèmes voient les fichiers de l'autres. Ceci permet à Windows d’exécuter les applications Linux, et a Linux de lire et écrire les fichiers Windows. Les réciproques ne sont pas vraies.
Voir les avertissements plus bas.

1) Activer WSL

Ouvrir une ligne de commande PowerShell en tant qu’administrateur (Run as administrator) et taper la commande :
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Ou bien, exécuter OptionalFeatures.exe et sélectionner "Windows Subsystem for Linux":



Dans tous le cas il faut rebooter pour que l’installation de WSL se fasse.

2) Installer l’application ‘Ubuntu’ depuis Microsoft Store.

Maintenant que l'on a le simulateur de kernel en place on peut installer des distributions linux adaptées à ce contexte. La plus aboutie de ces distributions est Ubuntu puisque Microsoft et Canonical ont travailler main dans la main pour concevoir WSL.

En prenant l’application nommée 'Ubuntu' vous aurez la version la plus récente. Il existe cependant des applications Ubuntu XX.Y pour des versions spécifiques de Ubuntu: 18.04 LTS et 16.04 LTS 

A la première exécution vous devez créer un utilisateur Linux. Il est sans lien avec l'utilisateur Windows.

Important: L'installation n'est valable que pour l'utilisateur courant. Cette installation n'est pas partagée.

3) Configurer

- Le fichier /etc/resolv.conf est un lien vers un fichier généré à chaque exécution de WLS. Si son contenu est vide ou ne vous convient pas il faut
  - Supprimer le fichier /etc/resolv.conf (le lien en fait)
  - Le re-créer en tant que fichier normal avec vos infos
nameserver 8.8.8.8

- Mettre à jour la distribution
$ sudo apt-get update
$ sudo apt-get upgrade

$ uname -a

Linux PCDEV09 4.4.0-17763-Microsoft #253-Microsoft Mon Dec 31 17:49:00 PST 2018 x86_64 x86_64 x86_64 GNU/Linux

Un   top ou  ps faux vous montrera que l’environnement n'est pas réel.

- Pour pouvoir compiler du code C/C++ il faut installer la suite gcc:

$ sudo apt-get install build-essential

$ gcc --version
gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0


- L’émulation de terminal peut poser des problèmes. Par défaut TERM=xterm-256color. En cas de problèmes essayer d’autres émulations comme TERM=vt100 ou TERM=screen

4) Fichiers Linux

- Le nom du répertoire où se trouvent les fichiers Linux est désigné par la clé de registre :
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\{xxxx-xxxx-xxxx-xx}\BasePath

Pour les versions de Windows 10 depuis 2018 ce chemin ressemble à: C:\Users\YourUserName\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs

Notez (à nouveau) que tout est dans le profils de l'utilisateur, ce n'est pas une installation partagée.

- En faisant shift + bouton droit sur un répertoire vous aurez l’option « Open Linux shell here »

- Depuis la ligne de commande Windows, grâce à wsl.exe, on peut exécuter des commandes Linux


5) AVERTISSEMENT

* Il ne faut pas éditer les fichiers Linux depuis une application Windows (comme notepad++).
Par contre l’inverse est possible : On peut manipuler les fichiers Windows depuis les applications Linux. Les disques Windows sont d’ailleurs automatiquement montés sur  /mnt/c  /mnt/d

* L’environnement fournit par Microsoft WSL (malgré son nom) N'EST PAS LINUX. Il n'y a pas de noyau Linux, mais seulement une simulation (pas une émulation) des appels systèmes Il est impératif d'effectuer des tests sur de véritables distrib Linux car il y a une foule de petites différences, de limitations et d’incompatibilités.
- Environ 30% des appels systèmes implémentés échouent.
- Plus de 150 appels systèmes ne sont pas implémentés.

Voir le détails des tests faits par Microsoft en avril 2017.

* La liste des problèmes montre bien que ce c'est un environnement de développement fragile et en aucun cas un environnement de production.

* D'un autre coté, des choses non supportées par Microsoft WSL fonctionnent pas trop mal. Par exemple, on peut faire fonctionner, tant bien que mal, des application graphiques comme Firefox, ou même Xfce avec, coté Windows, un serveur X comme VcXsrv. Le principaux problèmes viennent de D-Bus et des drivers vidéo et audio.






Plus d'info:
https://blogs.msdn.microsoft.com/wsl/ (n’est plus actif mais très intéressant)
https://blogs.msdn.microsoft.com/commandline/ (actif)
https://github.com/Microsoft/WSL (ce n'est pas le code)



16 août 2017

Firewall et Scanner

Par sécurité mes PC sous Windows sont installés avec un profil réseau ‘Public’ (et non Private/Home/Work). Ceci implique que beaucoup de ports sont par défaut fermés, interdisant les connexions entrantes. Ceci empêche, par exemple, le partage de fichiers entre PC (mais comme j’utilise un NAS pour cela ce n’est pas un problème). Plus gênant, la fonction numérisation de mon imprimante réseau Xerox qui dépose le résultat de la numérisation sur un répertoire partagé ne fonctionne plus.

Voici comment arranger tout ça.... 

25 avril 2016

Remove GWX

GWX.exe alias « Get Window 10 » c’est à dire « Obtenir Window 10 ».

Ce programme intrusif et qui vous incite à passer à Windows 10, est arrivé sur votre ordinateur sans crier gare via l’auto update de Windows. Pour le désactiver on pourrait agir à ce niveau mais cela ne serait que temporaire et insuffisant par lui-même. Microsoft a déjà publié cette pseudo mise à jour (KB3035583) le 14/mars/2015 et le 19/mars/2016. Donc ça risque encore de revenir.

Les fichiers installés par l’auto update sont dans C:\Windows\System32\GWX. Et aussi dans C:\Windows\SysWOW64\GWX pour les versions 64 bits. (sans oublier des petits bouts dans le gigantesque répertoire C:\Windows\winsxs). On peut les supprimer. Mais c’est un peu compliqué, même si on est admin, car le répertoire appartient à un utilisateur spécial ‘TrustedInstaller’ et pas à l’admin de base.

Il existe une autre solution, moins destructrice, qui consiste à supprimer les taches exécutées automatiquement via le task scheduler (planificateur de tache). Tous les programmes qui sont dans C:\Windows\System32\GWX sont régulièrement exécutés, sous diverses conditions, via le planificateur. Il faut exécuter Taskschd.msc en tant qu’administrateur  et on va supprimer les taches qui sont dans l’arbre aux positions :
  • \Microsoft\Windows\Setup\gwx\*
    et
  • \Microsoft\Windows\Setup\GWXTriggers\*
Étonnamment on peu désactiver (Disable) les taches de ...\Setup\gwx, pas celles de ...\Setup\GWXTriggers, par contre on peu toutes les supprimer (Delete).


Il suffit de répéter cela pour chaque tache de .../Setup/gwx et de .../Setup/GWXTriggers.

On reboote et voila : Adieu GWX !



NB le téléchargement de WX prend 3Go




08 août 2014

Controle du daemon Apache 2

Les packages précompilés pour Windows tels que WAMP ou XAMPP sont livrés avec une petite interface graphique pour gérer les divers services (daemon). Quand on se compile tout soit même on n’a pas cet outil. Que cela ne tienne !

Voici un batch pour gérer les arrêts/démarrages du daemon httpd d’Apache 2. Il est très pratique quand on met au point une configuration et qu’il faut souvent la recharger.

Il faut obligatoirement exécuter ce batch en faisant  un clic bouton droit dessus et en choisissant « exécuter en tant qu’administrateur ». Il y a dans le script une tentative d’utiliser « runas » pour le lancer en admin directement en tapant  son nom sur la ligne de commande mais il semble que les droits obtenus avec cette méthode ne soient pas suffisants pour installer le service.

Il faut adapter deux variables au début du fichier:
- le path complet de httpd.exe
- le nom de votre compte ayant les droits d’administrateur,

Il est facile d'étendre ce batch en fonction des besoins. On peut ajouter l’ouverture des fichiers de conf dans un éditeur comme notepad++ et l’affichage des logs (facile à faire si on installe la commande tail de gnuwin32)


@echo off
set HTTPD=C:\Path\to\Apache2\bin\httpd.exe
set ADMUSR=admin

if [%USERNAME%] == [%ADMUSR%] goto :init
@echo.
@echo Droits administrateur requis
runas /profile /user:%ADMUSR% %~dpnx0
if ERRORLEVEL 1 pause
goto :eof

:init
rem Fixe la taille visible de la fenêtre
mode con:cols=80 lines=40
rem Fixe la taille du buffer
powershell -command "&{$H=get-host;$W=$H.ui.rawui;$B=$W.buffersize;$B.width=80;$B.height=300;$W.buffersize=$B;}"
call :do_help

:loop
@echo.
set /P OP="Operation (help): "
2>nul call :do_%OP%
if ERRORLEVEL 1 call :erreur
goto :loop

:do_h
:do_help
@echo.
@echo == Operations :
@echo   h = help
@echo   i = info
@echo   install, uninstall
@echo   start, r = restart, stop
@echo   on=(install + start) off=(stop + uninstall)  info
@echo   q = quit
@goto :done

:do_on
@echo on
%HTTPD% -k install
%HTTPD% -k start
@goto :done

:do_off
@echo on
%HTTPD% -k stop
%HTTPD% -k uninstall
@goto :done

:do_i
:do_info
%HTTPD% -v -V
%HTTPD% -l
%HTTPD% -M
@goto :done

:do_r
set OP=restart

:do_install
:do_start
:do_restart
:do_stop
:do_uninstall
@echo on
%HTTPD% -k %OP%


:done
@echo off

rem force le errorlevel à zéro
ver > nul
goto :eof

:erreur
@echo.
@echo ERREUR: "%OP%" n'est une opération valide.
goto :eof


:do_q
:do_quit
:do_exit
exit


Bon, effectivement, il existe le très spartiate Apache Service Monitor  mais qui n’est pas extensible comme notre batch. Son avantage est de pouvoir gérer des serveurs Apache s’exécutant sur des machines Windows distantes.


01 août 2014

DBD-pg ActiveState & MSVC2013

Dernière étape de notre périple : compiler le driver DBI pour postgresql 9.3 sous Windows.

On suppose que sont déjà installés ces 3 logiciels :
-    Visual C/C++ (MSVC 2013)   (la version gratuite dite 'express' est suffisante)
-    Perl d’ActiveState 5.16           (vous devez pouvoir l’exécuter depuis la ligne de commande)
-    PostgreSQL 9.3.x                     (vous devez pouvoir vous y connecter en local)

(les versions sont données à titre indicatif. Il peut y avoir de variations)

1) Préparer le Makefile de DBD-pg

Télécharger ici : http://search.cpan.org/~turnstep/DBD-Pg/
puis décompacter les sources de DBD-pg 3.x

Ouvrir une ligne de commande (cmd.exe) à la racine des sources de DBD-pg
et taper ces 3 commandes:(à adapter suivant les versions de Postgres et de VC)
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
"C:\Program Files (x86)\PostgreSQL\9.3\pg_env.bat"
perl Makefile.PL
Si les environnements VC, Perl et PostgreSQL sont corrects tout se passe bien.

2) Compilation de DBD-pg

Taper la commande
nmake  
Si vous avez l’erreur  'C:\Program' is not recognized as an internal or external command, operable program or batch file. Voir dans l’article sur la compilation de mod_perl comment le corriger.

3) Tests de DBD-pg

Avant de lancer les tests il faut créer un rôle de connexion  ‘test’ et une base de donnée ‘test’ appartenant au rôle ‘test’
NB: Si vous utilisez Postgresql 9.0 ou + récent, il faut que ce rôle ai les droits de superviseur sur la base ‘test’.

Adaptez si nécessaire et taper ces 3 commandes :
Set DBI_DSN=dbi:Pg:dbname=test
Set DBI_USER=test
Set DBI_PASS=xxxx
Puis lancer les tests :
nmake test
* Si vous avez des caractères ou des texte bizarres  et/ou si vous avez des erreurs du type
Failed test 'Dollar quotes with invalid characters are not parsed as identifier
C’est parce que les messages d’erreurs de postgresql ne sont pas en Anglais !
Le test attend « syntax error » et il trouve « erreur de syntaxe », et ça lui va pas...

Pour passer les messages du serveur postgresql en anglais :
Éditer le fichier postgresql.conf (il est dans le répertoire data) et remplacer 
  lc_messages = 'French_France.1252'
par 
  lc_messages = 'en_EN.utf8'

Truc : Pour passer la console Windows en UTF8 taper la commande
chcp 65001


Pour que le changement dans postgresql.conf prenne effet arrêter/redémarrer le serveur postgresql depuis une console en admin :
sc stop postgresql-9.3
sc start postgresql-9.3

* Que faire si vous avez l’erreur suivante ?
    error: permission denied for relation pg_largeobject


Depuis PostgreSQL 9.0 il faut être superuser de la base pour accéder à pg_largeobject.
L’erreur est donc normale si le user ‘test’ n’est pas superuser ET si c'est au moins posgres 9. Vous pouvez lui donner ce droit, refaire les tests.

* Si tout se passe bien ça finit par
...
t/99cleanup.t ....... 1/1 Removing test database directory
t/99cleanup.t ....... ok
All tests successful.
Files=16, Tests=2089, 21 wallclock secs
Result: PASS

 

4) Installation de DBD-pg

Dernière commande:
nmake install
Il s’agit juste de copier des fichiers donc pas de problèmes attendus.


Partez pas !
Il reste à supprimer la base de donnée et le rôle utilisé pour les tests.


31 juillet 2014

mod_perl ActiveState & MSVC 2013

Après ce mémo sur compilation de Apache 2.2.x avec MSCV 2013 voici la compilation de mod_perl 2.0.x en utilisant le perl de ActiveState. (Avec Strawberry c’est encore plus compliqué car il utilise le compilateur gcc de MinGW)

Le Perl utilisé doit être au minimum 5.8.2 et être compilé avec les options usethreads , useithreads et usemultiplicity.  Pour le vérifier taper: perl –V:uses.+

En théorie il suffit de 4 commandes pour installer mod_perl
perl Makefile.PL MP_AP_PREFIX=\Path\to\Apache2.2.x
nmake
nmake test
nmake install
Malheureusement il y a quelques bugs…


1) Première étape, premier bug

Télécharger les sources de mod_perl 2.0.x ici : http://apache.org/dist/perl/

Assurez vous d’avoir le Perl et le bin de msvc dans le PATH puis, depuis la racine des sources de mod_perl, tapez ces 3 commandes:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
set MP_USE_MY_EXTUTILS_EMBED=1
perl Makefile.PL MP_AP_PREFIX=\Path\to\Apache2.2.x


Premier problèmes; Vous n’avez pas la librairie apxs.
Il propose de la télécharger, mais l’url est invalide.

Install apxs now? [yes]
Download of http://perl.apache.org/dist/win32-bin/apxs_win32.tar.gz failed


La bonne url est: https://archive.apache.org/dist/perl/win32-bin/apxs_win32.tar.gz

Il faut éditer le fichier build\win32_fetch_apxs et remplacer
    my $remote = 'http://perl.apache.org/dist/win32-bin/' . $file;
par
    my $remote = 'https://archive.apache.org/dist/perl/win32-bin/' . $file;

Cette fois le commande perl Makefile.PL MP_AP_PREFIX=\Path\to\Apache2.2.x  doit aboutir.


2) Deuxième étape (compilation), deuxième bug

L'étape suivante consiste à exécuter (toujours depuis la racine des sources de mod_perl)
nmake
Mais ça ne marche pas car on obtient :

'C:\Program' is not recognized as an internal or external command, operable program or batch file.
NMAKE : fatal error U1077: 'cd' : return code '0x1'
Stop.


Il faudrait éditer le fichier Makefile et ajouter les quotes au path de MAKE.

MAKE = C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\nmake.exe

mais ce bug est dans tous les Makefile des sous répertoires. Au total cela en fait plus de 60 !

La solution que j’utilise est d'éditer le module \Perl\lib\ActivePerl\Config.pm  et d’ajouter des quotes autour de $prog
for (@make) {
    if (my $prog = _find_prog($_)) {
    $_[0] = $OVERRIDE{$key} = "\"$prog\"";
Mais en ajoutant ces quotes on rend une expression régulière invalide. Il faut éditer \Perl\lib\ExtUtils\MM_Win32.pm et corriger la fonction is_make_type() en supprimant le $ de la fin de l’expression régulière
sub is_make_type {
    my($self, $type) = @_;
    return !! ($self->make =~ /\b$type(?:\.exe)?$/);
}
Avec ces 2 modifs on peut exécuter nmake sans avoir d'erreurs.


3) Troisième étape (tests), troisième bug
nmake test
Le daemon httpd.exe va être exécuté, certains tests ne sont pas exécutés s’il manque des dépendances mais certains vont échouer (en tout cas avec la version mod_perl 2.0.8) !
t/api/err_headers_out.t (Wstat: 0 Tests: 6 Failed: 3)
Failed tests: 2-3, 5
Files=1, Tests=6, 2 

Result: FAIL
Failed 1/1 test programs. 3/6 subtests failed. 

Solution: Dans le fichier t\api\err_headers_out.t il faut remplacer à deux endroits:
  if defined HTTP::Headers->VERSION and HTTP::Headers->VERSION==6.00;
par
  if defined HTTP::Headers->VERSION and HTTP::Headers->VERSION>=6.00;

Avec ces 2 modifs on peut exécuter nmake test sans avoir d'erreurs.


4) Dernière étape
nmake install
et ça marche (enfin) !



28 juillet 2014

Apache 2.2 & MSVC 2013



La branche 2.2.x du serveur http d’Apache a une importance particulière car mod_perl  y fonctionne correctement ce qui n’est pas le cas avec la nouvelle branche 2.4. Apache 2.2, bien qu'encore supporté, commence à dater. La version 2.2.0 date de décembre 2005. Depuis, les compilateurs ont évolués et des problèmes commencent à apparaitre. C’est le cas avec Visual Studio 2013 et sa « Plateform Toolset v120 ».

Voici ce qu’il faut corriger pour pouvoir compiler le serveur http 2.2 d'Apache avec MSVC 2013.

1) Télécharger

  1. Les sources du serveur http 2.2.xx d’Apache depuis : http://www.apache.org/dist/httpd/ 
  2. Les sources de APR-iconv. Les librairies pcre, APR et AP-utils sont incluses avec les sources de Apache mais pas APR-iconv  car les systèmes Unix fournissent déjà iconv() . Pour Windows ce n’est pas le cas, il faut donc télécharger cette librairie et la mettre dans le répertoire srclib sous le nom apr-iconv (sans aucun numéro de version). On trouve cette librairie ici : https://apr.apache.org/download.cgi 
  3. awk est utilisé pour générer la configuration du serveur (httpd.conf). On peut le télécharger ici  http://sourceforge.net/projects/gnuwin32/files/gawk/ sous le nom de gawk.

 2) Environnement

Le PATH doit inclure un chemin sur awk.exe et sur les binaires de MSVC
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin.

Ouvrir une console (cmd) dans le répertoire contenant les sources d'Apache.

Exécuter le script "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"

3) Compiler

Normalement il suffirait de taper la commande
    nmake -f Makefile.win
mais ça ne marche pas car on obtient 5 erreurs du type:

pr_atomic.obj : error LNK2019: unresolved external symbol __InterlockedXxxx referenced in function _apr_atomic_inc32@xx

Les 5 erreurs sont:

Creating library .\Release\libapr-1.lib and object .\Release\libapr-1.exp
apr_atomic.obj : error LNK2019: unresolved external symbol __InterlockedIncrement referenced in function _apr_atomic_inc32@4
apr_atomic.obj : error LNK2019: unresolved external symbol __InterlockedExchangeAdd referenced in function _apr_atomic_add32@8
apr_atomic.obj : error LNK2019: unresolved external symbol __InterlockedExchange referenced in function _apr_atomic_set32@8
apr_atomic.obj : error LNK2019: unresolved external symbol __InterlockedDecrement referenced in function _apr_atomic_dec32@4
apr_atomic.obj : error LNK2019: unresolved external symbol __InterlockedCompareExchange referenced in function _apr_atomic_cas32@12
.\Release\libapr-1.dll : fatal error LNK1120: 5 unresolved externals

NB; Ce problème n’apparait pas si on génère une version 64 bits d’apache.

4) Error LNK2019

Pour corriger cette erreur  il faut éditer le fichier srclib\apr\atomic\win32\apr_atomic.c et mettre en commentaire (ou supprimer)  tous les casts tel que celui-ci (il y en a 9 en tout) :

#else
return ( /*(apr_atomic_win32_ptr_ptr_ptr_fn)*/ InterlockedCompareExchange)(mem, with, cmp);
#endif


(apr_atomic_win32_xxxx) est mis en commentaire 10 fois.
NB: Ceci supprimera les erreurs mais en échange on aura 7 warnings C4047 et 5 warnings C4024 à la compilation.

5) Error LNK2011

A ce stade, si on tentait à nouveau de compiler on obtiendrait cette nouvelle erreur :

adobe-stdenc.obj : error LNK2011: precompiled object not linked in; image may not run
..\Release\iconv\adobe-stdenc.so : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\link.EXE"' : return code '0x460'
Stop.


Cette erreur, de manière générale, vient du fait que
1.    un fichier xxxx.c est compilé pour créer un fichier xxxx.pch,
2.    ce fichier xxxx.pch est utilisé pour compiler d’autres fichiers .c
3.    au moment de l’édition de lien xxxx.obj n’est pas utilisé
(Détail ici: http://msdn.microsoft.com/en-us/library/3ay26wa2.aspx)

La solution générique a cette erreur consiste donc à ajouter xxxx.obj à la liste des fichiers obj au moment de l’édition des liens.

Dans le cas de Apache 2.2.x, éditer le fichier srclib\apr-iconv\build\modules.mk.win, localiser cette règle et y ajouter la partie surlignée en vert.

.c{$(OUTPUT_DIR)}.so:
    $(SILENT)cl $(ALL_CFLAGS) /Fo$*.obj /Yuiconv.h /c $<
    $(SILENT)link $(ALL_LDFLAGS) $(MODRES).obj $*.obj $(API_LIBS) /out:$@ \
        /base:@"..\build\BaseAddr.ref",$(@F)


Pour comprendre il faut bien voir que $(ALL_CFLAGS) utilisé à chaque compilation contient ... /Fd$(MODRES).pdb /Fp$(MODRES).pch ...

6) Compiler (pour de bon)

Une fois ces erreurs corrigées on peut lancer depuis la racine des sources
  nmake -f Makefile.win   (pour seulement compiler)
ou
  nmake –f Makefile.win installr    (pour compiler et installer dans C:\Apache22)

Le répertoire d’installation peut être spécifié avec le paramètre INSTDIR

  nmake -f Makefile.win INSTDIR="D:\my\Path\Apache" installr

Regardez les commentaires au début du fichier Makefile.win pour découvrir les différents paramètres pouvant être utilisés  pour customiser la compilation et/ou l’installation.

7) Démarrer le serveur HTTPd

Aller dans le répertoire bin de apache (par défaut C:\Apache22\bin) et exécuter httpd.exe






21 juillet 2014

Recherche des lib et dll



Quand on ajoute la librairie XYZ a un projet C/C++ il y a trois informations à donner au compilateur et linkeur :
  1. Le répertoire où se trouve les entêtes des fonctions et classes  (-I /path/to/headers)
  2. Le répertoire où se trouve la librairie (-L /path/to/libs)
  3. Le nom de de la librairie (-l XYZ)
Ce qui est perturbant c’est que bien souvent le nom réel du fichier de cette librairie n’est pas juste ‘XYZ’. En fait quand vous passez l’option "-l XYZ" au linkeur de gcc sous Windows voici, dans l'ordre de recherche, les 7 noms de fichiers qui seront cherché par gcc :





  | "lib" | “XYZ”  | ".dll" | ".a" | ".lib" | Nom cherché
  +-------+--------+--------+------+--------|
1 |   X   |   X    |   X    |  X   |        | libXYZ.dll.a
  +-----------------------------------------|
7 |       |   X    |   X    |  X   |        | XYZ.dll.a
  +-----------------------------------------|
3 |       |   X    |        |  X   |        | XYZ.a
  +-----------------------------------------|
4 |       |   X    |        |      |    X   | XYZ.lib
  +-----------------------------------------|
5 |   X   |   X    |   X    |      |        | libXYZ.dll
  +-----------------------------------------|
6 |       |   X    |   X    |      |        | XYZ.dll
  +-----------------------------------------|
7 |   X   |   X    |        |  X   |        | libXYZ.a
  +-----------------------------------------|


Ceci est répété pour chaque chemin par défaut et pour chaque chemin définit par l'option -L /path/to/libs  jusqu’à ce que l’un de ces 7 noms soit trouvé.

Notez que toutes les combinaisons ne sont pas testées: libXYZ.lib ne sera pas cherché par le linkeur.

17 juillet 2014

GCC Cygwin MinGW and co


GCC est LA suite de compilation du projet GNU, surtout connue pour son compilateur C/C++ mais qui peut aussi compiler Ada, Fortran, Go, Java.

Bien sur on retrouve gcc sur tout les systèmes GNU (bsd, linux) mais aussi sur les Unix propriétaires (Aix, HPUX, MacOS, Solaris ...) et sous Windows. Ce qui fait de gcc LE système de compilation multi plates-formes par excellence.

Sous Windows, même si Microsoft propose, via les éditions “Express”, des versions allégées mais gratuites de sa suite Visual Studio on peut vouloir utiliser un compilateur multi plate-forme, multi langages, open source, avec des mises à jour régulières et conforme aux standards. Dans ce cas gcc est LE bon choix.


GNU GCC sous WINDOWS

Cygwin est une environnement très complet permettant de simuler un environnement POSIX (Unix, Linux, BSD) sous Windows. Les exécutables produits par cygwin/gcc dans cet environnement sont dépendants d’une DLL (cygwin1.dll) émulant l'environnement POSIX sous Windows.

Note : Microsoft Windows Services for Unix (SFU) est un environnement Unix/Posix développé par Microsoft, gratuit mais pas open source, proche de cygwin. SFU 3.5 inclus gcc 3.3. Une version allégée de SFU est incluse dans Win7 Enterprise et Ultimate.


MinGW (Minimalist GNU for Windows) est un portage des principaux outils de développement GNU sous Windows. Les exécutables produits par MinGW/gcc utilisent directement les DLL de Microsoft fournies avec Windows et ne nécessitent pas de couche d’émulation comme avec cygwin.

Actuellement MinGW fonctionne sur Windows 32 et 64 bits mais ne permet de produire que des exécutables 32 bits.

Optionnellement MinGW propose une ligne de commande Unix (bash) et quelques outils du monde Unix (grep, make …). Cet environnement Unix optionnel s’appelle MSYS et est basé sur cygwin mais il ne sert pas à produire des exécutables POSIX comme cygwin. MSYS est juste une facilité pour faire du ‘./configure et make’.

MinGW-w64 est un fork (non voulu) de MinGW. Son gros avantage est de pouvoir produire des exécutables 32 et 64 bits.

TDM-GCC de Twilight Dragon Media et une légère variante et un mix de MinGW et MinGW-w64.
Ces variantes sont principalement de nouvelles options pour gérer les exceptions suivant plusieurs méthodes : SJLJ, DWARF, SEH.

MingGW-builds même buts que TDM-GCC mais plus confidentiel.



GCC et les IDE C++ MULTI PLATE-FORME (Windows, Linux, Mac)

Le compilateur C/C++ de Microsoft fonctionne en ligne de commande mais est surtout réputé pour son interface graphique de qualité : Visual Studio. Mais Visual Studio n’est disponible que sous Windows. Heureusement il existe des environnements de développement graphiques multi plates-formes (Windows, Linux, Mac) utilisant le compilateur C/C++ de gcc. Voici les 3 principaux:

Code::Blocks Le compilateur par défaut pour Windows de Code::Blocks est TDM-GCC mais MinGW/gcc, cygwin/gcc, MSVC, BorlandC++, Watcom sont aussi supportés.

Qt va bien au-delà de l’IDE car il propose aussi une framework pour construire des interfaces graphiques utilisant le même code source sur toutes les plates-formes, y compris Android et iOS. MinGW/gcc et MVSC sont supportés

Eclipse est écrit en java donc plus lourd et plus lent que les IDE natifs. Eclipse est plus un atelier de génie logiciel qu'un simple IDE. Il fonctionne avec de (très) nombreux plugins et supporte ainsi plusieurs langages:  java, C/C++, PHP, SQL ... Le module CDT supporte plusieurs compilateurs dont MinGW/gcc et cygwin/gcc.

15 juillet 2014

Boost + MinGW (Qt, CodeBlock)

Ce n’est malheureusement pas nouveau mais compiler les librairies de Boost sous Windows sans utiliser Visual Studio C++ mais en utilisant MinGW/gcc est une véritable galère !
- Il faut absolument  MASM,  l’assembleur de Microsoft . (celui de gcc n’est pas supporté)
- Il y a 2 bugs dans la batch build.bat qui compile bjam (le ‘make’ de Boost)
- La procédure d’installation/compilation est mal conçue et il faut éditer manuellement des fichiers de configuration.

Nous allons voir comment corriger tout cela...

PREREQUIS
  • MASM est installé. Voir absolument ce post pour éviter de devoir installer MSVC avec MASM.
    MASM doit être dans le PATH.
  • MinGW est installé, soit directement soit via un outil tel que Qt ou Code::Blocks.
    Quelle que soit l’origine de MinGW il faut obligatoirement ajouter au PATH le répertoire ’bin’ de MinGW
  • Télécharger les sources des librairies Boost.

Ce qui suit a été testé avec Boost 1.55 + win7 64bits


PREMIER BUG de tools\build\v2\engine\build.bat.

Le programme d’installation de Boost s’attend à trouver MinGW dans C:\MinGW mais si vous l’avez installé ailleurs, ou utilisez le MinGW de Qt ou CodeBlock ça ne marchera pas.Voici comment corriger cela.

Dans le fichier tools\build\v2\engine\build.bat remplacer (ou mettre en commentaire avec REM) les 4 lignes :
if EXIST "C:\MinGW\bin\gcc.exe" (
   set "BOOST_JAM_TOOLSET=mingw"
   set "BOOST_JAM_TOOLSET_ROOT=C:\MinGW\"
   goto :eof)
Par ces 5 lignes:
call :Test_Path mingw32-make.exe
if not errorlevel 1 (

   set "BOOST_JAM_TOOLSET=mingw"
   set "BOOST_JAM_TOOLSET_ROOT=%FOUND_PATH%..\"
   goto :eof)

Pourquoi  chercher mingw32-make.exe et non gcc.exe dans le PATH ?
- Si on cherche gcc.exe on risque de trouver une installation de gcc qui n’appartient à MinGW mais à cygwin.
- Si on cherche mingw32-gcc.exe on ne trouvera pas gcc si c’est la version 64 bits qui est installée car son nom est  i686-w64-mingw32-gcc.exe
- Réciproquement, si on cherche i686-w64-mingw32-gcc.exe on ne trouvera pas la version 32 bits.
Par contre si on cherche et trouve mingw32-make.exe on est certain qu’avec lui il y a une version de gcc (32 ou 64 bits) appartenant à MinGW.


DEUXIEME BUG de tools\build\v2\engine\build.bat

Ce bug a pour effet de détecter la présence du compilateur de Microsoft MSVC même quand il n’est pas installé. La cause de ce bug est que pour certaines versions de Windows la commande 

    set test=%~$PATH:1

met à jour le errorlevel et pour d’autres non. Ce bug est par exemple présent pour WIN7 64 bits.

Dans la fonction :Test_path, avant la ligne ‘endlocal’ il faut ajouter cette ligne

    if not defined test ( call :Set_Error ) else ( call :Clear_Error )

Ce qui donne :

:Test_Path
REM Tests for the given file(executable) presence in the directories in the PATH
REM environment variable. Additionaly sets FOUND_PATH to the path of the
REM found file.
call :Clear_Error
setlocal
set test=%~$PATH:1
if not defined test ( call :Set_Error ) else ( call :Clear_Error )
endlocal
if not errorlevel 1 set FOUND_PATH=%~dp$PATH:1
goto :eof



TROISIÈME BUG

Une fois ces deux premier bugs corrigés, on peut ouvrir une ligne de commande (cmd) dans la racine des sources de  Boost et taper :

  bootstrap.bat

Ensuite NE PAS TAPER b2 comme indiqué à l’écran !

Il faut au préalable éditer le fichier project-config.jam et remplacer msvc par mingw.

La raison de ce travail supplémentaire est expliqué dans les commentaires du fichier bootstrap.bat :
REM Ideally, we should obtain the toolset that build.bat has
REM guessed. However, it uses setlocal at the start and does
REM export BOOST_JAM_TOOLSET, and I don't know how to do that
REM properly. Default to msvc for now.

set toolset=msvc
Incroyable, n’est-ce pas, qu’après tant d’années personne n’ai trouvé de solution...

Après avoir modifiè project-config.jam vous pouvez exécuter « b2 »


TRUC:

Utilisez "b2 -j 4" pour utiliser 4 theads de compilation, ou plus si votre processeur le supporte.
Pour tout effacer b2 --clean

Plus d'info sur les paramètres de b2...

Après un temps plus ou moins long (de 10 à 50 min) suivant la vitesse cpu et disque de votre machine et le nombre de threads mis en jeux vous obtiendrez  :
The Boost C++ Libraries were successfully built!
The following directory should be added to compiler include paths:

    C:/xyz/boost_1_55_0

The following directory should be added to linker library paths:

    C:\xyz\boost_1_55_0\stage\lib


(xyz depend de là où vous avez décompressé Boost)

Bravo !


Boost 1.55 et MSVC 2013 (Quatrième bug)


En compilant Boost 1.55 avec Microsoft Visual Studio Express 2013 (donc version 12) on a cette erreur de compilation:

transform_width.hpp(151) : error C2039: 'min' : is not a member of 'std'
transform_width.hpp(151) : error C3861: 'min': identifier not found


Pour la corriger il faut ajouter cette simple ligne: 
#include <algorithm>
au début de boost/archive/iterators/transform_width.hpp

Il n’y a donc pas que GCC qui est mal testé par les développeurs de Boost !

NB: Je n'utilise Boost que quand c'est imposé car, depuis toujours, c'est la galère.

MASM pour Boost et MinGW

Certaines librairies de Boost contiennent du code écrit en assembleur. Contrairement à C++ qui utilise la même syntaxe quel que soit le système (Linux, Mac, Sun, Windows) l’assembleur n’est pas standardisé. Bien que le processeur soit le même, le même le code ne s’écrit pas de la même façon sous Linux ou Windows parce que l’assembleur par défaut de ces plateformes n’est pas le même.

L'assembleur inclus avec gcc est 'as'. Il est présent sous Windows et Linux mais les mainteneurs de Boost refusent d’avoir deux versions du même code pour la même plateforme. Hors de question pour eux d’avoir une version pour 'MASM' de Microsoft et une autre version pour 'as' de GNU. Pour Windows la seule version disponible est celle pour MASM.

Donc, si vous voulez utiliser la suite gcc de MinGW pour compiler les librairies de Boost il vous faudra malgré tout MASM de Microsoft et, en théorie, une version anglaise de Visual Studio C++ Express Edition. En effet à l’installation de MASM requiert MSVS C++ Express.


En soit rien de grave car les deux produits sont librement et gratuitement téléchargeables chez Microsoft.
Cependant on peut vouloir éviter d’installer toute une suite C++ pour juste pouvoir assembler quelques lignes d’assembleur.  

Voici donc comment installer MASM sans MSVC Express.

Pour cette manipulation on utilisera 7zip : http://www.7-zip.org/
  1. Télécharger MASMsetup.EXE chez Microsoft
    http://www.microsoft.com/en-us/download/details.aspx?id=12654.


  2. Bouton droit sur le fichier qui vient d’être téléchargé,
    dans le sous menu 7-Zip sélectionner « open archive ».

    Ceci ouvrira 7-Zip et vous montrera le contenu du fichier MASMsetup.EXE c’est-à-dire le fichier setup.exe.




  3. Bouton droit sur ‘setup.exe’ puis choisir l’option « Open Inside ».
    Le nom des deux fichier inclus dans setup.exe vont s'afficher.


  4. Bouton droit sur  « vc_masm1.cab » puis à nouveau choisir « Open Inside ».




  5. Un nom de fichier ‘compliqué’ va apparaitre.


     
  6. Faire glisser ce fichier sur le bureau et le renommer « ml.exe »
     
  7. Déplacer ml.exe dans un répertoire présent dans le PATH ou créez en un pour l’occasion.
     
  8. Pour vérifier que tout est ok, ouvrir une ligne de commande (cmd) et taper « ml ». Vous devez obtenir la version du Macro Assembler .



Et voila !



27 novembre 2013

Mozilla Plugins registry

Les plugins de Firefox ne sont pas stockés dans un répertoire spécifique mais chaque plugins ajoute des entrées dans la registry pour indiquer où se trouve la dll à charger, pour quels mime-types il doit être invoqué ect. Il est est facile d'ajouter un plugins sans que l'utilisateur de Firefox s'en rende compte.
Des applications très honnêtes font cela (VLC, Adobe, Java ect).
D'autres applications font cela en douce comme  Google Chrome ou Microsoft...

Malheureusement on ne peut que désactiver un plugins. Pour qu'il ne figure plus dans la liste des plugins il faut supprimer ses entrées de la registry. Pour cela il faut lancer regedit et chercher toutes les clefs "MozillaPlugins" et supprimer les entrées correspondant aux plugins indésirables dans chacune de ces entrées:

HKEY_CURRENT_USER\Software\MozillaPlugins
HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MozillaPlugins  (64bits)


Note: Supprimer la clef ne supprime aucun fichier du disque.

Une bonne habitude est de régulièrement visiter: http://www.mozilla.org/en-US/plugincheck/

19 septembre 2013

GNU radio pour Windows

GNU radio est à l’origine une application spécialisée dans le traitement des signaux radio. Son but est de traiter ces signaux de manière logicielle. C’est ce que les anglais appellent « Software Defined Radios : SDR ». Cette approche logicielle à l’avantage d’être plus souple et moins onéreuse que la méthode matérielle. Avec le temps GNU radio est devenu un système de traitement du signal numérique au sens large.

GNU radio inclus une interface graphique « GNU radio compagnon : GRC » qui permet d’interconnecter très facilement les blocks logiciels nécessaires aux traitements d’un signal. Si vous programmez en C++ et python vous pourrez ajouter vos propres blocks à la librairie de GNU radio.

GNU radio est une application open source écrite principalement en python sauf les parties critiques pour les performances qui sont écrites en C++ et utilisent la librairie Boost. GNU radio s’interface avec le matériel (carte son, dongle usb) et est donc en partie lié à l’OS. Son développement se fait principalement sous Linux mais il existe un portage 32 bits vers Windows.


Avant de commencer à télécharger...

* Python existe en deux grandes versions : 2.7.x et 3.x
Beaucoup de librairies ou modules utilisés par GNU radio fonctionnent avec python 3.x, mais pas tous. Par exemple PyGTK et wxPython ne fonctionnent pas avec python 3.x. On doit donc en rester (pour le moment) à python 2.7.x qui est la version de python la plus stable.

* Même remarque pour 32 bits et 64 bits. On doit en rester aux versions 32 bits, même si vous utilisez un Windows 64 bits.

* A l’exception de PyQwt qui requiert les droits d’administrateur pour s’installer dans c:\program-files\Pyqwt5, tous les autre composant s’installent dans le répertoire python qui par défaut est C:\python27 et ne requiert pas les droits admin

Si vous voulez faire simple: Installez tout en étant administrateur et installez python dans son répertoire par défaut C:\Python27. En respectant cela les installations se feront en gardant toutes les options par défaut.


INSTALLATIONS  ~ Ce qui suit a été testé sur XP 32 bits et Seven 64 bits.

Installez les 10 ou 11 logiciels qui suivent dans l'ordre indiquez ci-dessous

Pour info, voici les versions disponibles en sep/2013
soit ~170 Mo à télécharger.

1) Python ~ http://www.python.org/
Download : http://www.python.org/download/releases/
Choisir la version 2.7.x pour win32 la plus récente.
Exemple : python-2.7.5.msi

Important: Ajoutez C:\Python27 au PATH de Windows dés maintenant.


2) NumPy ~ http://www.numpy.org/
Un package python absolument fondamental pour le calcul scientifique.
Download : http://sourceforge.net/projects/numpy/files/NumPy/
Sélectionnez la version supportée par PyQwt (voir plus bas)
Prendre le superpack.
Exemple : numpy-1.7.1-win32-superpack-python2.7.exe


3) lxml ~ http://lxml.de/
API python pour les librairies libxml2 et libxslt. Les blocks manipulés par GRC sont décrit en XML.
Download : https://pypi.python.org/pypi/lxml/
Example : lxml-3.2.3.win32-py2.7.exe


4) PyOpenGL ~ http://pyopengl.sourceforge.net/
API python pour OpenGL
Download : https://pypi.python.org/pypi/PyOpenGL/
Exemple : PyOpenGL-3.0.2.win32.exe


5) Cheetah template engine ~ http://www.cheetahtemplate.org/
Generateur de code.Utiliser pour convertir en python les schémas logiques de GRC.
Download : https://pypi.python.org/pypi/Cheetah/
Exemple : Cheetah-2.4.4.tar.gz
Ceci n’est pas un exécutable. Il faut le décompresser, et exécuter la commande :
  python setup.py install
On peut ensuite supprimer le répertoire contenant Cheetah.

Si vous êtes attentif vous verrez que l’installation de Cheetat se termine par:
One or more C extensions failed to build.
Performance enhancements will not be available.
Pure Python installation succeeded.
Ceci est normal pour deux raisons:
- Conflit de noms ne se distinguant que par la case dans le même répertoire : Cheetah.h et cheetat.h.
Windows ne faisant pas la différence un seul fichier subsiste sur le disque.
- De toute façon on ne peut pas compiler sous Windows.
Mais rien de grave, on en reparlera plus bas...


6) PyQt ~ http://www.riverbankcomputing.com/software/pyqt/
API python pour utiliser le Framework Qt.
Download : http://sourceforge.net/projects/pyqt/files/PyQt4/
Sélectionner la version supportée par PyQwt (voir plus bas)
Exemple : PyQt-Py2.7-x86-gpl-4.9.6-1.exe


7) PyQwt ~ http://pyqwt.sourceforge.net/
Une extension de Qt pour le tracé de graphiques.
Il faut que les versions installées de NumPy et de PyQt soient en adéquation avec PyQwt.
Mais attention les versions requises par PyQwt sont rarement les plus récentes.
En principe on télécharge PyQwt ici : http://pyqwt.sourceforge.net/download.html
Mais actuellement (sept/2013) la version PyQwt la plus récente est ici : http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqwt
Exemple : PyQwt-5.2.1-py2.7-x32-pyqt4.9.6-numpy1.7.1.exe
Cette version 5.2.1 de PyQwt est conçue pour fonctionner avec
- Python  2.7
- Mode 32 bits
- PyQt  4.9.6  (voir #6)
- NumPy  1.7.1  (voir #2)
Attention :
- Il faut obligatoirement les droits d’administrateur car PyQwt s’installe en partie dans C:\ProgramFiles\PyQwt5
- Si vous avez installé python ailleurs que dans son répertoire par défaut, PyQwt ne le trouvera pas et s’en plaindra. Continuez l’installation puis indiquez le répertoire où  se situe votre python.


8) PyGTK  ~ http://www.pygtk.org/
API python pour utiliser la librairie graphique GTK+.
Download : http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/
Prendre le package all-in-one
Exemple : pygtk-all-in-one-2.24.2.win32-py2.7.msi


9) wxPython ~ http://www.wxpython.org/
API python pour utiliser le framework wxWidgets (écrit en C++)
Download : http://www.wxpython.org/download.php
Ne pas prendre la version ansi, mais unicode.
Example : wxPython2.8-win32-unicode-2.8.12.1-py27.exe


10)  GNU Radio ~ http://gnuradio.org/
Logiciel de traitement de signaux numeriques
Download : http://files.ettus.com/binaries/gnuradio/
Exemple : gnuradio_3.6.4.1_Win32.exe
Il y a toujours un délais de plusieurs semaines (ou mois) entre la disponibilité d'une version sous Linux et sont portage sous Windows.


Environment
Cette variable est deja mise en place pendant l'installation de GNUradio
    GRC_BLOCKS_PATH=C:\Program Files\gnuradio\share\gnuradio\grc\blocks
Mais celle là, vous devez l’ajouter à la main:
    PYTHONPATH=C:\Program Files\gnuradio\lib\site-packages

Rappel: Avec un Windows 64bits les applications 32 bits sont dans: "Program Files (x86)"

Si jamais...
En cas de besoin (car il n’est pas rare de déjà les avoir sur sa machine) les bibliothèques de Visual C++ 2010 sont dispo chez Microsoft : http://www.microsoft.com/en-us/download/details.aspx?id=5555

Executer GNUradio companion (enfin !)
Double cliquer sur le script python
    C:\Program Files\gnuradio\bin\gnuradio-companion.py
ou
    C:\Program Files (x86)\gnuradio\bin\gnuradio-companion.py

Ecran d’accueil de GNU radio Companion
Si vous êtes attentif vous verrez dans la console le message suivant :
You don't have the C version of NameMapper installed! I'm disabling Cheetah's useStackFrames options as it is painfully slow with the Python version of NameMapper ect..
Rien de grave. C'est juste la conséquence de ce qu'on a vu pendant l’installation de Cheetah.

NB: Cette console est à surveiller pendant l’exécution GRC car c'est là que l'on trouve les détails des éventuelles erreurs.

Comprendre et apprendre
Pour comprendre comment GNU radio companion fonctionne commencez par  puis ici.
Il y a aussi ce tuto de 5 videos HD-720p.

Des exemples sont dans C:\Program Files\gnuradio\share\gnuradio\examples
Mais si vous voulez pouvoir les utiliser sans être admin, il faudra les copier ailleurs.

Si vous n'avez pas de sources réelles pour alimenter GNU radio vous pouvez trouver des fichiers ici :
http://signals.radioscanner.ru/base/
http://crawdad.cs.dartmouth.edu/


11) USRD Hardware Driver (UHD)
Driver pour les périphériques USRD (Universal Software Radio Peripheral).
Ceci ajoutera de nouveaux blocks logiciels pour communiquer avec les périphériques USRD.
Exemple : uhd_003.005.003-release_Win32.exe

Pendant l’installation sélectionnez l’option “add UHD to the system PATH for all user”, sinon vous devrez faire l’ajout de la variable UHD_PKG_DATA_PATH à la main.

Exemples de périphériques USRD : https://www.ettus.com/product/category/USRP-Bus-Series
Plus d’info sur UHD : http://ettus-apps.sourcerepo.com/redmine/ettus/projects/uhd/wiki


QRV ?...