Linuxでライブラリファイルを接続する方法

2503 ワード

http://www.cnblogs.com/vincent2600/archive/2011/06/19/2084629.html
Linuxの下の静的ライブラリは、通常は.aで終わるが、静的ライブラリに接続するには、2つの方法があり、1つは、コンパイルコマンドの最後に直接ライブラリパス/ライブラリ名を追加する方法である.例えば、あなたのライブラリは絶対ディレクトリ/lib/libtest.aの下にあります.このようにコンパイルできます.$
もう一つの方法は-Lでクードパスを作成し、-lでライブラリの名前を指定します.例えば、ライブラリの名前はlibtest.aです.それなら-ltestを使います.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17CROSS_COMPILE = arm-linux-uclibc- CC = $(CROSS_COMPILE)gcc EXEC = armsimplescan OBJS = simplescan.o CFLAGS = -Wall -I/home/user/blueZ/bluez_arm/bluez-libs/include LDFLAGS = -L/home/user/blueZ/bluez_arm/bluez-libs/lib -lbluetooth
#default:$(EXEC) %.o: %.c $(CC) -c $(CFLAGS) $< -o $@
#all:$(EXEC)
$(EXEC):$(OBJS) $(CC) $(CFLAGS) $(OBJS) -o $@ $(LDFLAGS) -static clean: rm -f $(EXEC) $(OBJS) のMakefileの で$LDFLAGSは$@の ろに くべきです.
ダイナミックライブラリ、スタティックライブラリの :
?
1
2
3
4
5
6
7
8
9OBJS = foo.o
libtest.a : $(OBJS) rm -f libtest.a $(AR) rcs libtest.a $(OBJS)
libtest.so : $(OBJS) rm -f libtest.so $(CC) -shared -o libtest.so $(OBJS) ライブラリ:libtest.aとlibtest.soを するには
?
1
2
3
4LIB += -L/lib LIB += -ltest target: $(OBJS)  $(CC) -o target $(CFLAGS) $(OBJS) $(LIBS)ダイナミックライブラリとスタティックライブラリが する は、ダイナミックライブラリを にリンクします.ダイナミックライブラリが つからない は、そのままスタティックライブラリを します.デバッグのためにスタティックライブラリを に すると、CFLAGSに-staticを することができます.
makefileの については、http://www.linuxsir.org/main/doc/gnumake/GNUmake_v 3.80-zh_CNhtml/make-10. gnuメーク10.5.3 が いいです.