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
17
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
17
CROSS_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 が いいです.