首页 > 其他分享 >静态库与动态库制作与使用

静态库与动态库制作与使用

时间:2022-11-10 20:48:49浏览次数:33  
标签:gcc main 静态 LD LIBRARY PATH 动态 制作

静态库

1. gcc获得.o文件

gcc -c xx.c xx.c

 

2.将.o文件打包,使用ar工具(archive)

ar rcs libxxx.a xxx.o xxx.o

  r - 将文件插入备存文件中

  c - 建立备存文件

  s - 索引

 使用

gcc main.c -o app -I ./include -L ./lib -l calc

将main.c 编译链接为app

-I 表示从之后的目录寻找头文件
-L 表示从之后的目录寻找静态库

-l 表示库名称,(注意:不是库文件名称libcalc.a)

 动态库

命名规则

libxxx.so

  lib:前缀(固定)

  xxx:库的名字

  .so:后缀(固定)

  在Linux下是一个可执行文件

Windows:libxxx.dll

动态库的制作

  1.gcc得到.o文件,得到和位置无关的代码

gcc -c -fpic/-fPIC a.c b.c

  2.gcc的到动态库

gcc -shared a.o b.o -o libcalc.so

   3.动态库使用

gcc main.c -o main -I ./include -L ./lib -l calc

直接输入./main会出现找不到动态库的错误

1.临时配置:在命令行里配置动态库路径

新建终端就会失效

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:动态库绝对路径

绝对路径可进入到动态库的目录下输入pwd 获取

2.永久配置

  用户级别:

    在home目录下:vim .bashrc

    在最后一行插入

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:动态库绝对路径

    保存退出后,输入source .bashrc使之生效

  系统级别:

    在可执行程序所在目录下

sudo vim /etc/profile

·    最后一行插入

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:动态库绝对路径

    保存退出后,输入source ./etc/profile使之生效

 

标签:gcc,main,静态,LD,LIBRARY,PATH,动态,制作
From: https://www.cnblogs.com/WTSRUVF/p/16871003.html

相关文章

  • antd table 树形数据动态加载
    antd的table组件支持树形结构的数据,不过前提是需要将整棵树的数据一次性全部返回,对于数据量比较大的情况下,可能会需要动态加载数据。exportdefaultfunctionDynamicT......
  • 编译Qt静态库
    qt如何静态编译程序 很多时候,我们发布程序的时候,在没有qt依赖环境的地方,都需要将qt所依赖的动态库加入项目同路径.这样会让强迫症的码农感觉很麻烦.要想一个exe走......
  • serilog 动态更新日志级别
    使用这个库,更新配置文件,就可以动态更新日志输出级别。newLoggerConfiguration().ReadFrom.Configuration(hostingContext.Configuration)这个Configuration定义在这儿......
  • 想给企业自研的业务系统登录添加OTP动态密码二次认证,双因子认证是怎么做的?
    背景需求不少企业因业务需要会自己研发一些业务系统,为保护业务数据安全,首先要确保能访问到业务数据的人员“身份”安全可信。企业自研业务系统的账号密码基本是IT管理员单......
  • Ubuntu22.04配置静态IP
    1打开配置文件sudovim/etc/netplan/01-network-manager-all.yaml2输入以下配置network:version:2renderer:NetworkManagerethernets:ens33:......
  • 使用 Gitea + Drone CI 自动部署 Hexo 静态网站到 Cloudflare Pages
    前段时间使用Hexo重建了个人博客。我之前一直使用VSCode在本地写博客,用git推送到GitHub存档,每次推送的之后都由GitHubActions自动构建Hexo静态网站然后发布......
  • 动态规划
    动态规划首先,动态规划问题的一般形式就是求最值。既然是要求最值,核心问题是什么呢?求解动态规划的核心问题是穷举。因为要求最值,肯定要把所有可行的答案穷举出来,然后......
  • linux 动态库 版本号,软链接SONAME的编译选项
    摘自:https://www.csdn.net/tags/MtTaEgysMzQ2MDMtYmxvZwO0O0OO0O0O.htmlLinux下动态库有三个名字:realname、soname、linkname。realname:共享库本身的名字,命名格式为......
  • 注解加反射动态创建表
    场景:一个实体,几十个字段,Java实体类建一遍,数据库建一遍,痛苦面具 所需代码:packageme.xiaomaju.base;importjava.lang.annotation.ElementType;importjava.lang.a......
  • element form 动态增减表单项加验证
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="v......