FAQ MATLAB
FAQ MATLABConsultez toutes les FAQ
Nombre d'auteurs : 11, nombre de questions : 172, dernière mise à jour : 29 septembre 2022
- Comment créer un exécutable fonctionnant sans MATLAB ?
- Quels sont les différents compilateurs supportés pour créer un exécutable ?
- Comment choisir le compilateur à utiliser pour créer un exécutable ?
- Que faut-il installer sur l'ordinateur où l'exécutable est déployé ?
- Une application compilée est-elle plus rapide ?
- Dois-je payer des royalties à MathWorks sur mes applications déployées ?
- Le MATLAB Compiler convertit-il le code MATLAB en langage C ?
- Est-il possible de supprimer la fenêtre DOS qui apparaît à l'exécution du code déployé ?
- Est-il possible de déployer un exécutable sur un système d'exploitation différent de celui où il a été compilé ?
- Dois-je mettre tous les noms de mes fichiers lorsque j'utilise mcc ?
- Toutes les fonctions MATLAB sont-elles supportées par le MATLAB Compiler ?
Cette solution n'est valable qu'à partir de la version 7.0 (R14) de MATLAB.
(voir Comment trouver le numéro de la version de MATLAB installée sur ma machine ?)
Avant de se lancer dans la création de l'exécutable, vous avez impérativement besoin de deux choses :
- le MATLAB Compiler (voir Comment connaitre la liste des Toolbox installées sur un ordinateur ?) ;
- un compilateur externe (voir Quels sont les différents compilateurs supportés pour créer un exécutable ?).
Une fois ces vérifications faites, vous devez encore spécifier le compilateur à utiliser à MATLAB.
Pour ce faire, voir Comment choisir le compilateur à utiliser pour créer un exécutable ?
Vous avez maintenant deux possibilités pour créer un exécutable :
- en ligne de commande en utilisant la fonction mccDocumentation de la fonction mcc ;
- via une interface graphique appelée Deployment Tool avec la fonction deploytoolDocumentation de la fonction deploytool.
Pour illustrer le propos, nous allons utiliser l'exemple du carré magique fourni avec MATLAB.
Copiez le fichier magicsquare.m dans le dossier de votre choix avec la commande suivante :
copyfile(fullfile(matlabroot, 'extern'
, 'examples'
, 'compiler'
, 'magicsquare.m'
), '<chemin du dossier>'
)
Vérifiez bien que le dossier courant de MATLAB est celui contenant le fichier que vous venez de copier.
- Pour créer l'exécutable en ligne de commande, il suffit alors de taper :
mcc -m magicsquare
- Pour afficher les informations sur les différentes étapes de la création de l'exécutable, vous pouvez aussi spécifier en plus l'argument -v comme ceci :
mcc -mv magicsquare
- Pour créer l'exécutable à partir du Deployment Tool, vous devez d'abord ouvrir ce dernier comme ceci :
deploytool
Vous trouverez le reste de la procédure pour utiliser cet outil graphique dans cette démo.
En cas de réussite, l'une ou l'autre des méthodes créent un exécutable que vous pouvez tester dans un terminal DOS ou UNIX ou, si vous avez installé le MCR sur votre machine (voir Que faut-il installer sur l'ordinateur où l'exécutable est déployé ?), directement depuis le prompt MATLAB en faisant précéder le nom de l'exécutable du caractère « ! » ou en utilisant la fonction systemDocumentation de la fonction system.
Dans tous les cas, vous obtiendrez le même résultat en lançant l'exécutable sous MATLAB :
>> !magicsquare 4
m =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> system('magicsquare 4'
);
m =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
ou dans une fenêtre de commande (ici DOS) :
La liste des compilateurs supportés par la dernière version du MATLAB Compiler est disponible dans la troisième colonne de ce tableau : Supported and Compatible Compilers.
Pour les versions plus anciennes, voir la colonne de droite de ce tableau : System Requirements and Supported Compilers - Previous Releases.
Pour choisir le compilateur à utiliser parmi la liste des compilateurs installés, il faut utiliser la commande suivante :
mbuild -setup
En fonction du système d'exploitation et de votre configuration, MATLAB affiche alors des menus de choix.
- Sous Windows
Please choose your compiler for building standalone MATLAB applications:
Would you like mbuild to locate installed compilers [y]/n?
Appuyez sur la touche [Entrée] ou sur la touche [y] de votre clavier pour laisser MATLAB chercher et lister les compilateurs.
Si aucun compilateur n'est listé, voir Quels sont les différents compilateurs supportés pour créer un exécutable ?.
- Sous Linux
>> mbuild -setup
Options files control which compiler to use, the compiler and link command
options, and the runtime libraries to link against.
Using the 'mbuild -setup' command selects an options file that is
placed in ~/.matlab/R2009a and used by default for 'mbuild'. An options
file in the current working directory or specified on the command line
overrides the default options file in ~/.matlab/R2009a.
To override the default options file, use the 'mbuild -f' command
(see 'mbuild -help' for more information).
The options files available for mbuild are:
1: /usr/local/MATLAB/R2009a/bin/mbuildopts.sh :
Build and link with MATLAB Compiler generated library via the system ANSI C/C++ compiler
0: Exit with no changes
Enter the number of the compiler (0-1):
Pour porter votre exécutable sur une machine où MATLAB n'est pas installé, il faut installer dans l'ordre :
- Le MATLAB Component Runtime (MCR) ;
- L'exécutable créé avec le MATLAB Compiler.
Pour les versions antérieures à la R2008a, il faut aussi fournir le fichier .ctf avant de lancer l'exécutable.
Vous trouverez l'exécutable du MCR dans le sous-dossier « toolbox/compiler/deploy/<arch> » du dossier d'installation de MATLAB.
<arch> est un nom de dossier qui est fonction de votre système d'exploitation et de votre architecture (win32, win64…).
Pour déployer une application en réseau sans que tous les utilsateurs aient à installer le MCR sur leur machine : How do I deploy my compiled stand-alone application on a network drive so that it can be accessed by all network users without having to install MATLAB Component Runtime (MCR) on all client computers?
Lien : What libraries should I include when distributing my stand-alone application?
Non, le but du MATLAB Compiler est de créer un exécutable qui puisse fonctionner sur une machine où MATLAB n'est pas installé.
Lien : Does the MATLAB Compiler speed up the execution time of MATLAB functions?
Non, c'est le rôle d'une autre Toolbox, le MATLAB Coder.
Le MATLAB Compiler ne fait qu'envelopper le code MATLAB dans du code C.
C'est la raison pour laquelle il est nécessaire d'installer le MATLAB Component Runtime (MCR) sur la machine où sera déployée l'application.
A partir de la version R2007b de MATLAB (et seulement sous Windows), il est possible de supprimer la fenêtre DOS qui apparaît à l'exécution du code déployé. Il suffit d'utiliser l'option -e à la place de l'option -m avec la fonction mccDocumentation de la fonction mcc :
mcc -e …
Cette méthode fonctionne avec tous les compilateurs, sauf celui fourni avec MATLAB, c'est à dire Lcc.
Pour les versions antérieures à la R2007b, il est seulement possible de minimiser la fenêtre DOS dans la barre des tâches.
Lien : -e Suppress MS-DOS Command Window
Lien : How do I keep the DOS window from appearing when launching a MATLAB stand-alone program?
Non. Si vous créez un exécutable sous Windows il ne fonctionnera que sous Windows. Pour qu'il fonctionne sous Unix, il faut utiliser le MATLAB Compiler sous Unix et recréer un exécutable (et vice-versa).
Non
Il est inutile, par exemple, de taper :
mcc -mv fichier1.m fichier2.m fichier3.m
Si votre programme principal est fichier1, alors la commande suivante suffit :
mcc -mv fichier1
Le MATLAB Compiler trouve lui-même les dépendances entre les M-files.
La majorité des fonctions MATLAB sont bien prises en charge par le MATLAB Compiler et peuvent donc être utilisées dans des applications déployées. Néanmoins, il existe un certain nombre de fonctions que vous ne pourrez pas utiliser.
Liste des fonctions non supportées (MATLAB et Toolbox) : MATLAB Compiler - Support for MATLAB and Toolboxes
Plus spécifiquement pour MATLAB : MATLAB Functions That Cannot Be Compiled