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édenteDernière révisionLes deux révisions suivantes | ||
tuto:linux:tuto_compilation [2013/06/05 20:38] – créée root | tuto:linux:tuto_compilation [2013/06/08 16:42] – 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.txt · Dernière modification : 2013/06/08 17:19 de root