博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux——静态库和动态库的生成
阅读量:4615 次
发布时间:2019-06-09

本文共 956 字,大约阅读时间需要 3 分钟。

 

  1.vi test.h test.c main.c

  2.gcc -c test.c
  3.ar rcs libtest.a test.o 静态rcs可换成-r/ gcc -shared -fPIC -o libtest.so test.o 动态
  4.gcc -o main main.c -L. -ltest
  查看静态库中的.o文件:执行命令 ar -t libhycu.a

 

  gcc -c -c表示只编译不链接

  gcc -o test test.c libcrexr64.a
  gcc -o test test.c -L. -lcrexr64 -static 将首先查找静态链接库

【1】生成静态库:

  $ gcc -c func.c -o func.o
  $ ar rcs libfunc.a func.o
  $ gcc main.c -o main -static -L. -lfunc
  $ ./main

【2】生成动态库:

  $ gcc -fPIC -c func.c -o func.o
  $ gcc -shared -o libfunc.so.1.0.0 func.o
  $ ln -s libfunc.so.1.0.0 libfunc.so
  $ gcc main.c -o main -L. -lfunc
  $ export LD_LIBRARY_PATH=$(pwd)
  $ ./main
  如果将so文件copy到系统lib目录(如/usr/lib),则最后2步就不用了。

最后还有3个小知识:

  【1】nm命令:列出目标文件或2进制文件的所有符号。
  【2】ldd命令:列出为了使程序正常运行所需要的所有共享库。
  【3】/etc/ld.so.conf文件:除了标准目录(/lib和/usr/lib)之外,链接器和加载器搜索共享库时要检查的其他目录,和这个文件相关的一个命令是:ldconfig 。
reference:
    https://blog.csdn.net/idoit0204/article/details/2729171

转载于:https://www.cnblogs.com/bingoc/p/10773531.html

你可能感兴趣的文章
osip及eXosip的编译方法
查看>>
Hibernate composite key
查看>>
[CF Round #294 div2] D. A and B and Interesting Substrings 【Map】
查看>>
keepalived+nginx安装配置
查看>>
我的2015---找寻真实的自己
查看>>
android编译遇到问题修改
查看>>
解决Ubuntu18.04.2远程桌面Xrdp登录蓝屏问题
查看>>
Git的安装和使用教程详解
查看>>
lsof命令详解
查看>>
常用模块,异常处理
查看>>
父窗口与子窗口之间的传值
查看>>
eclipse 找不到 tomcat 的解决方案
查看>>
HDU 1890--Robotic Sort(Splay Tree)
查看>>
connection string for Excel/Access 2010
查看>>
【转】【Python】Python中的__init__.py与模块导入(from import 找不到模块的问题)
查看>>
学习wavenet_vocoder之环境配置
查看>>
常用Maven命令
查看>>
Docker启动mysql的坑2
查看>>
j2ee爬坑行之二 servlet
查看>>
JAVA基础入门(JDK、eclipse下载安装)
查看>>