Linux下静态库、动态库的生成及使用

生成静态库

1,编译得到.o文件:gcc -c time.c -o time.o

2,打包成静态库:ar -rcs libmytime.a time.o

静态库的使用

1,将time.h libmytime.a 分别放入/usr/local/test0516/include 、/usr/local/test0516/lib

mkdir -p /usr/local/test0516/include

mkdir -p /usr/local/test0516/lib

cp ./time.h /usr/local/test0516/include/time.h

mv ./libmytime.a /usr/local/test0516/lib/libmytime.a

2,使用静态库 使用I选项指定 包含文件的搜索路径

gcc test.c -o test -I/usr/local/test0516/include -L/usr/local/test0516/lib -lmytime

3,运行

./test

生成动态库

1,编译得到.o文件:gcc -c -fPIC time.c -o time.o

2,链接生成动态库:gcc -shared time.o -o libmytime.so

动态库的使用

1,将time.h libmytime.so 分别放入/usr/local/test0516/include 、/usr/local/test0516/lib

mkdir -p /usr/local/test0516/include

mkdir -p /usr/local/test0516/lib

cp ./time.h /usr/local/test0516/include/time.h

mv ./libmytime.so /usr/local/test0516/lib/libmytime.so

2,删除time.c time.h time.o

rm -f time*

2,使用动态库 编译使用I选项指定 包含文件的搜索路径

gcc test.c -o test -I/usr/local/test0516/include -L/usr/local/test0516/lib -lmytime

3,设置环境变量

export LD_LIBRARY_PATH=/usr/local/test0516/lib

4,运行

./test

静态库动态库并存时强制使用静态库

查询使用的是哪种库readelf -d test

使用全路径

gcc test.c /usr/local/test0516/lib/libmytime.a -o test -I/usr/local/test0516/include

猜你喜欢

转载自blog.csdn.net/qinglongqishi1/article/details/80338253
今日推荐