动态库和静态库

花了一下午时间来看动态库和静态的使用,还好都看懂了,而且都实验成功了

 

linux  下静态库以.a结尾 动态库以.so结尾

下面是我的目录结构

main.c

stack3

          stack.h

          stack.c

          pop.c

          push.c

          is_empty.c

 

1.静态库

  cd stack3

  gcc -c pop.c push.c stack.c is_empty.c

  ar rs libstack.a *.o

  cd ..

  gcc main.c -L stack3 -lstack -Istack -o main

  ./main

 

2.动态库

  cd stack3

  gcc stack.c pop.c push.c is_empty.c -fPIC -shared -o libstack.so

  (有些资料上写的 -c -o一起用,经测试不能一起用的)

  cd ..

  gcc main.o -L stack3 -lstack -Istack3 -o main

  ./main

  (错误提示找不到libstack.so)

   ldd main

  (查看链接路径的时候也找不到)

   cat /etc/ld.so.conf

   (显示 include ld.so.conf.d/*.conf)

   vim /etc/ld.so.conf.d/mytest.conf

   (添加一行 /....../stack3/)

   ldconfig

   ./main

   (成功)

 

3.小知识

拷贝一个文件夹

cp -rf stack2 stack3

(不用mkdir stack3哦)呵呵,我是菜鸟,以前不知道

 

ps 我学习的资料大部分是linux c 一站式学习.pdf

你可能感兴趣的:(c,linux,动态链接库,静态链接库)