Programowanie w systemie UNIX/Kompilacja: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
literówki, interpunkcja, formatowanie |
|||
Linia 6:
===jeden plik===
[[File:Hello-c.png|right|thumb|Najprostszy program ]]
Najprostsza kompilacja
Plik z kodem programu
gcc p.c
Otrzymasz plik a.out (
* '''uruchom''' za pomocą
./a.out
Możesz '''zmienić nazwę generowanego pliku'''
gcc p.c -o p.out
* uruchom za pomocą
./p.out
Możesz włączyć wszystkie '''ostrzeżenia''' (
gcc -Wall p.c
Linia 32:
[[File:Programmeren in C Foobar inc 2.svg|right|thumb|kilka plików programu]]
Możemy skompilować ręcznie
gcc -o executable sourcefile_1.c sourcefile_2.c ... sourcefile_n.c
Linia 38:
====biblioteki====
Na przykładzie biblioteki matematycznej libm w wersji
* statycznej (zwykle /usr/lib/libm.a
*
Aby skorzystać z tej biblioteki należy :
* dodać w pliku <code>p.c
* w czasie kompilacji dołączyć bibliotekę libm
==Narzędzia do kompilacji ==
Linia 58:
===[[w:autoconf|autoconf]]===
Typowo
./configure
make
make install
ale możliwa jest optymalizacja dla procesorów wielordzeniowych
./configure
Linia 78:
=Optymalizacja=
Można przyspieszyć działanie programu przez odpowiednią kompilację <ref>
Np. dodanie opcji kompilacji
-O3 -funroll-loops
lub
Linia 86:
Porównaj efekty zaawansowanej optymalizacji tutaj <ref>[http://shootout.alioth.debian.org/ The Computer Language Benchmarks Game ]</ref>
Inne opcje
-mtune=native
generuje kod dostrojony do aktualnego procesora (na innym też się uruchomi).
Linia 92:
wykorzystuje wszystkie instrukcje używanego procesora (jeżeli inny procesor ich nie obsługuje, kod nie będzie działał).
Za pomocą instrukcji
gcc -O3 -Q --help=optimizers | grep disabled
sprawdzamy wszystkie wyłączone opcje.
<pre>
Linia 170:
=Testowanie programu =
Są 2 metody
==Program
gcc -o prog main.c
time prog
Przykład użycia
Testujemy ile czasu zajmie 4000 razy
const int iXmax = 4000;
Linia 188:
}
Skompilowany
gcc s.c -lm
Uruchomiony
time ./a.out
real 0m0.267s
Linia 197:
sys 0m0.040s
Jeśli usuniemy komendę printf
real 0m0.150s
Linia 210 ⟶ 209:
[[Programowanie_w_systemie_UNIX/gprof|Opis gprof]]
Kompilacja z opcją <code>-pg</code> powoduje, że po wykonaniu skompilowanego programu zostaną zapisanie do pliku gmon.out czasy wykonania poszczególnych funkcji
gcc -o prog main.c -pg
|