linux中的静态和动态库

参考blog:Linux中的库_linux中的wk-CSDN博客

1.库是什么?
库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。就是将源代码转化为二进制格式的源代码,相当于进行了加密,别人可以使用库,但是看不到库中的内容。

2.如何使用?
用户需要同时具有头文件和库。

头文件(相当于说明书的作用,能够知道这个库能干嘛)

制作出来的库(具体的实现,存放.c、.cpp)
 

3.静态库:

静态库的制作:格式xxxx.a

     第一步:gcc calcufuncs.c -c 生成xxx.o文件

     第二步:ar rcs libcalcufunc.a calcufuncs.o  xxx.o文件生成xxx.a静态库文件:

 静态库使用:

       gcc calculatorT.c -I ./ -lcalcufunc -L ./ -o mainProStatic

  注释:-lcalcufunc -l(小写的L)是制定要用的动态库,库名砍头去尾

            -I(大写的i) :是指定头文件的路径

            -L:告诉gcc编译器从-L制定的路径去找静态库。默认是从/usr/lib  /usr/local/lib去找

         

4.动态库 

动态库的制作:

 gcc -shared -fpic calcufuncs.c -o libcalc.so

-shared 指定生成动态库

-fpic 标准,fPIC 选项作用于编译阶段,在生成目标文件时就得使用该选项,以生成位置无关的代码。

 动态库使用:

 gcc calculatorT.c -I ./ -lcalc -L ./ -o mainProDy

出现上述错误时,需配置环境变量export,因为在执行程序时,动态库要临时调用,默认是从/usr/local下找。

可以指定该程序运行时候,在LD_LIBRARY_PATH 所指定的路径去找库文件

export LD_LIBRARY_PATH=库的目录  临时的只是对当前窗口。

要是永久有效,进入~/.bashrc 文件把   export LD_LIBRARY_PATH=库的目录 ,放在最后,打开新的窗口在运行。

du 可执行文件:可以查看占用内存

你可能感兴趣的:(linux,运维,服务器,c++,c语言,嵌入式实时数据库,51单片机)