静态库只在链接时需要。命名规则为 lib.a
动态库在链接时和运行时都需要。命名规则为lib.so 或者lib.so.<版本号>
编译器默认情况下是先去找动态库,如果动态库找不到,就再去找静态库。也可以使用-static 指定使用静态库。
如:gcc -o hello main.c -L . -lmyhello
-L 为指定库所在路径
-l 为指定要找的库名。 这里编译器会去找libmyhello.so.* 或 libmyhello.a
静态库和动态库比较:
采用静态库时,得到的可执行程序文件会比较大,当库更新时,需要重新编译,程序执行时不需要跳转到库地址执行,所以执行速度会相对较快。
采用动态库时,优缺点刚好和上面相反。
阅读(380) | 评论(0) | 转发(0) |