静态库与动态库相关知识笔记

来源:互联网 发布:2018mpacc知乎 编辑:程序博客网 时间:2024/05/01 00:21
1. ldd 可查看程序需要哪些动态库
   nm  可查看程序,库里有哪些函数
   file 可查看文件的类型 
   objdump -D 反汇编.o/.a/.so/elf可执行文件 


2. 制作静态库 (test1.c  test2.c)
gcc test1.c -c -o test1.o
gcc test2.c -c -o test2.o

ar -cr libmy.a test1.o test2.o
   使用:
gcc test.c  ./libmy.a  -I 头文件的所在路径
或者gcc test.c -L 库所在路径 -lmy -I 头文件的所在路径


3. 制作动态库(test1.c test2.c)
gcc test1.c test2.c -shared -fPIC -o libmylib.so
   使用:
gcc test.c ./libmylib.so
或者gcc test.c -L 库所在路径 -lmylib
库发布:
把库复制到/lib/ 或者 /usr/lib
  或者: export LD_LIBRARY_PATH=库所在路径

vim /etc/ld.so.conf
增加库所在的绝对路径
ldconfig

4. 手动加载动态库  gcc test.c -ldl
   handle = dlopen(库路徑文件名, RTLD_LAZY);
   dlsym(handle, "函数名"); //返回函数的地址


   dlclose(handle);


gcc -rdynamic test.c -o test -ldl
0 0