tuto:linux:tuto_compilation
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| tuto:linux:tuto_compilation [2013/06/05 20:38] – créée root | tuto:linux:tuto_compilation [2013/06/08 17:19] (Version actuelle) – [Exemples] root | ||
|---|---|---|---|
| Ligne 6: | Ligne 6: | ||
| * **CC** : Compilateur C (gcc, icc...) | * **CC** : Compilateur C (gcc, icc...) | ||
| * **CXX** : Idem que CC mais pour le C++ (export CXX=$CC) | * **CXX** : Idem que CC mais pour le C++ (export CXX=$CC) | ||
| - | | + | |
| - | * **CXXFLAGS** : Idem pour le C++ (export CXXFLAGS=$CFLAGS) | + | * **CXXFLAGS** : Idem pour le C++ (export CXXFLAGS=$CFLAGS) |
| - | * **LDFLAGS** : Permet de préciser les répertoires où se trouvent les librairies (*.so) et include(*.h) (LDFLAGS=" | + | * **LDFLAGS** : Permet de préciser les répertoires où se trouvent les librairies (*.so) et include(*.h) (LDFLAGS=" |
| ./configure CC=gcc CFLAGS=-O3 LDFLAGS=-lposix | ./configure CC=gcc CFLAGS=-O3 LDFLAGS=-lposix | ||
| Ligne 45: | Ligne 45: | ||
| Prenons une exemple tout bête, fichier qui affiche tu texte via 2 fonctions incluses dans 2 librairies différentes. | Prenons une exemple tout bête, fichier qui affiche tu texte via 2 fonctions incluses dans 2 librairies différentes. | ||
| - | * Librairie //boo.c// : | + | |
| <code c boo.c> | <code c boo.c> | ||
| #include < | #include < | ||
| Ligne 99: | Ligne 99: | ||
| - | * Compilation en shared : | + | |
| <code bash compile1.sh> | <code bash compile1.sh> | ||
| Ligne 133: | Ligne 133: | ||
| - | * Compilation en shared avec la librairie boo directement inclue en statique dans le binaire : | + | |
| <code bash compile2.sh> | <code bash compile2.sh> | ||
| Ligne 262: | Ligne 262: | ||
| | | ||
| </ | </ | ||
| + | |||
| + | * Include les 2 librairies dans une seule : | ||
| + | |||
| + | <code c compile6.sh> | ||
| + | #!/bin/bash | ||
| + | |||
| + | gcc -c -Wall -Werror -fpic foo.c | ||
| + | |||
| + | gcc -c -Wall -Werror -fpic boo.c | ||
| + | gcc -shared -o libgigix.so boo.o foo.o | ||
| + | |||
| + | gcc -L. -Wall -o test main.c -lgigix | ||
| + | |||
| + | export LD_LIBRARY_PATH=/ | ||
| + | ./test | ||
| + | |||
| + | ldd test | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | root@ks305337: | ||
| + | This is a shared library test... | ||
| + | Hello, I'm a shared library : foo | ||
| + | Hello, I'm a shared library : boo | ||
| + | linux-vdso.so.1 => (0x00007fff2e7fe000) | ||
| + | libgigix.so => / | ||
| + | libc.so.6 => / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | === Compilation statique === | ||
| + | |||
| + | |||
| + | Pour compiler un programme en static (par exemple python) : | ||
| + | < | ||
| + | ./configure LDFLAGS=" | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | Pour transformer un binaire dynamique en statique, il existe des outils comme : | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
tuto/linux/tuto_compilation.1370464682.txt.gz · Dernière modification : de root
