Installer SystemC et TLM : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Installer SystemC 2.3)
Ligne 1 : Ligne 1 :
Pour installer SystemC et TLM, vous pouvez les télécharger sur http://www.accellera.org/, mais il est sans doute plus pratique de les télécharger ici : http://www-verimag.imag.fr/~moy/cours/tlm/systemc/
+
Pour installer SystemC 2.3.2 (version la plus récente), vous pouvez les télécharger sur http://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.2.tar.gz
  
 
== Sur les machines de l'Ensimag ==
 
== Sur les machines de l'Ensimag ==
Ligne 15 : Ligne 15 :
 
mkdir obj
 
mkdir obj
 
cd obj
 
cd obj
 +
CXXFLAGS='-O3 -g -Wall -Wextra -Winvalid-pch -Wno-unused-parameter --std=gnu++11'
 
../configure
 
../configure
 
make
 
make

Version du 13 septembre 2018 à 12:58

Pour installer SystemC 2.3.2 (version la plus récente), vous pouvez les télécharger sur http://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.2.tar.gz

Sur les machines de l'Ensimag

SystemC et TLM sont installés dans /matieres/5MMMTSP/.

Installer SystemC 2.3

En principe, il suffit de télécharger l'archive et d'appliquer le bon vieux configure/make/make install

curl -O https://matthieu-moy.fr/cours/tlm/systemc/systemc-2.3.1.tgz
tar xzvf systemc-2.3.1.tgz 
cd systemc-2.3.1
mkdir obj
cd obj
CXXFLAGS='-O3 -g -Wall -Wextra -Winvalid-pch -Wno-unused-parameter --std=gnu++11'
../configure
make
make install
echo installation OK

on peut vérifier que tout s'est bien passé :

cd ..
ls include/
ls lib-*/

On doit trouver les fichiers d'en-tête dans include/, et les bibliothèques dans lib-*/ (le nom du répertoire dépend de la plateforme sur laquelle on compile) :

systemc-2.3.1$ ls include/
sysc/  systemc  systemc.h  tlm  tlm_core/  tlm.h  tlm_utils/
systemc-2.3.1$ ls lib-*/    
libsystemc-2.3.1.so*  libsystemc.a  libsystemc.la*  libsystemc.so@

Configuration

Pour utiliser les Makefiles des TPs et exemples, il vous reste à faire positionner la variable d'environnement $SYSTEMCROOT, qui doit pointer sur votre installation de SystemC.

Le plus simple est de se baser sur le fichier setup-ensimag.sh fourni dans l'archive Git en adaptant les chemins à votre configuration.

Fichier : TPs/setup-ensimag.sh |raw |historique |rafraichir

<include select="" linesXXX="{{{lines}}}" fromXXX="{{{from}}}" toXXX="{{{to}}}" beforeXXX="{{{before}}}" afterXXX="{{{after}}}" linestartXXX="{{{linestart}}}" linenumsXXX="{{{linenums}}}" src="http://github.com/moy/cours-tlm/raw/master/TPs/setup-ensimag.sh" highlight="bash" style="border: 0px none white"> </include>

Installer SystemC 2.2 (ancienne version)

AttentionCe qui suit est gardé pour mémoire, mais n'est plus nécessaire avec SystemC 2.3


Téléchargement

depuis la page http://www-verimag.imag.fr/~moy/cours/tlm/systemc/, récupérer systemc-2.2.0.tgz et le patch (pour éliminer des warnings et erreurs génants de GCC) systemc-2.2.0.patch, par exemple avec

curl -O http://www-verimag.imag.fr/~moy/cours/tlm/systemc/systemc-2.2.0.tgz
curl -O http://www-verimag.imag.fr/~moy/cours/tlm/systemc/systemc-2.2.0.patch
curl -O http://www-verimag.imag.fr/~moy/cours/tlm/systemc/systemc-2.2.0-macosx.patch

Compilation et installation

On extrait l'archive, on applique les patchs, et on compile :

tar xzvf systemc-2.2.0.tgz 
patch -p0 < systemc-2.2.0.patch
patch -p0 < systemc-2.2.0-macosx.patch
cd systemc-2.2.0

rm -f config/config.guess config/config.sub config/missing
autoreconf --install

mkdir obj
cd obj
../configure
make
make install

Le téléchargement et l'application de systemc-2.2.0-macosx.patch ne sont bien entendu nécessaires que sous Mac OS X.

Les lignes « rm -f config/config.guess config/config.sub config/missing; autoreconf -f --install » permettent de mettre à jour certains fichiers nécessaires à la compilation. Elle élimine quelques warnings sous Linux, et est nécessaire sous Mac OS X.

Vérification

Vous devriez obtenir ceci :

$ ls lib-linux64/    # ou juste lib-linux, ou lib-macosx selon la machine.
libsystemc.a
$ ls include/
sysc  systemc  systemc.h

Erreurs à l'installation

Si vous obtenez une erreur « sc_utils_ids.cpp:109: error: ‘getenv’ is not a member of ‘std’ », modifiez le début de sc_utils_ids.cpp :

#include <cstdlib>
#include <string.h>
#include "sysc/utils/sc_report.h"
using namespace std;

Si vous obtenez une erreur « sc_cor_qt.cpp:97: error: ‘caddr_t’ was not declared in this scope », ajoutez cette ligne au début de src/sysc/kernel/sc_cor_qt.cpp :

#include <sys/types.h>

(ces modifications sont incluses dans les patchs, donc en principe, tout est déjà fait pour vous)

Installer TLM (ancienne version, plus nécessaire depuis SystemC 2.3)

On télécharge :

curl -O http://www-verimag.imag.fr/~moy/cours/tlm/systemc/TLM-2.0.1.tgz
curl -O http://www-verimag.imag.fr/~moy/cours/tlm/systemc/tlm-2.0.1.patch

et on applique le patch pour éliminer des warnings :

tar xzvf TLM-2.0.1.tgz
patch -p0 < tlm-2.0.1.patch

... c'est tout, rien à compiler ! (TLM-2.0 est constitué uniquement de templates, et C++ impose que tout soit défini dans les fichiers d'en-tête dans ces cas là)