Android NDK

动态链接库和静态链接库

2018-01-04  本文已影响0人  那些年我们一起遇到过的坑

动态库和静态库

动态库的优势和劣势

静态库的优势和劣势

Linux平台的静态库

静态库的生成

 默认就是在编静态库,-c要求只预处理、编译,不链接。
 > gcc -c hello.c
 用ar命令将.o文件归档.a文件。
 > ar -r libhello.a  hello.o

静态库的链接

 -static选项是告诉编译器,-L大写的L指明库所在的目录,-l小写的L是在指出需要的动态库,hello是静态库。
 > gcc main.c -static -L .  -lhello  -o  main

Linux平台的动态库

动态库的生成

 在使用GCC编译程序时,只需加上-shared选项,
 > gcc hello.c -fPIC -shared -o libhello.so

动态库的链接

 不加-static选项,-l小写的L是在指出需要的动态库。
 > gcc main.c -L . -lhello -o main

Windows平台的静态库

静态库的生成

/MT 使用 LIBCMT.lib 编译以创建多线程可执行文件。 生成静态库lib。

静态库的链接

#pragma comment(lib,"mydll.lib")
extern "C" __declspec(dllimport) int hello(int);

Windows平台的动态库

动态库的生成

/MD 使用 MSVCRT.lib 编译以创建多线程 DLL。生成动态库。

动态库的链接

上一篇 下一篇

猜你喜欢

热点阅读