You are on page 1of 9

Bin dch vi GNU gcc, make

Phm Nguyn Khang, Thanh Ngh


Email: pnkhang,dtnghi@cit.ctu.edu.vn

Bin dch

V d n gin trong ngn ng C

Son tho 2 files: main.c v func.c

Bin dch

S dng gcc [options] sources


cc ty chn (options)
-o: sinh ra tp tin output
-c: sinh ra tp tin i tng .o
-I: c t th mc cha tp tin include
-l: c t tn th vin
-L: c t ng dn n th vin

Bin dch

S dng gcc dch ra file i tng (.o)

G: gcc c main.c (sinh ra main.o)


G: gcc c func.c (sinh ra func.o)

S dng gcc dch ra file thc thi t cc file i tng

G: gcc o main main.o func.o (sinh ra chtrnh main)

Bin dch

Dch vi make v Makefile dch t ng cc bc trn


Son tho Makefile
Makefile l 1 file c bit dng qun l cc tp tin trong d n
Cha cc quy tc bin dch
S dng thuc tnh modified time bin dch li
To ra 1 th ph thuc
C php:
<target>: <danh sch cc file ph thuc>
<TAB> lnh

Ch phi dng phm <TAB> ch khng phi khong trng


5

Bin dch

Dch vi make v Makefile dch t ng cc bc trn

Son tho Makefile nh sau

G: make
Lnh make s c cc bc dch trong Makefile dch v sinh
ra chtrnh main

Bin dch

Th vin lin kt

Mc nh gcc c th lin kt vi cc file i tng


G: gcc o main main.c func.o
Tnh: cha nhng file i tng .o c to bi cng c ar
G: ar rcs libfunc.a func.o (to ra th vin libfunc.a)
Dch main vi: gcc o main main.c libfunc.a
ng: c load khi chtrnh chy, c to bi gcc
G: gcc c fPIC func.c (to ra func.o)
G: gcc shared W1,soname,libfunc.so.1 o libfunc.so.1.0
func.o
To ra libfunc.so.1.0 (libfunc.dll)
Dch main vi: gcc o main main.c libfunc.so.1.0
7

Bin dch

Th vin lin kt ng

Chy chtrnh main: c li khng tm thy th vin lin kt ng


Hoc ch li ng dn n th vin
g: export LD_LIBRARY_PATH=$(pwd)
Hoc sao chp libfunc.so.1.0 n /usr/lib ri
chy ldconfig cp nht LD

You might also like