gcc入门及合并静态库

2023-11-09

1、gcc入门

(1)gcc即是linux下c/c++的编译器。

gcc经常用的的选项有-c,-o。

 

-c表示只编译(compile)源文件但不链接,会把.c或.cc的c源程序编译成目标文件(二进制文件),一般是.o文件。

-o用于指定输出(out)文件名。不用-o的话,一般会在当前文件夹下生成默认的a.out文件作为可执行程序。

 

我们在任意位置新建一个test文件夹,方便我们写测试文件。

 

现在我们新建一个test.cpp文件,里面代码如下:

 

#include "stdio.h"
int main()
{
	printf("test  !!!!!\n");
	return 0;
}

 

 

 

 

-c选项:

gcc -c test.cpp

生成二进制test.o文件,.o文件是一个中间文件 ,可制作成库文件,也可以生成可执行文件。

-o选项:

gcc test.cpp -o test

  或者,利用刚刚生成的test.o文件:gcc test.o -o test

即可生成test可执行文件。

如果命令为:

gcc test.cpp 或 gcc test.o

即像上文所说的生成a.out可执行文件。

 

 

2、合并静态库

制作静态库

ar rc libtest.a test.o

现在说本文的重点,合并静态库。

有关制作静态库命令可以参考

linux ar命令

而静态库的使用,百度一下。

注意链接文章说的,静态库的模块是.o文件。

之前我一直想把一个静态库包含到另一个静态库里,比如:ar rc liball.a libtest1.a libtest2.a

即把libtest1.a和libtest2.a包含到liball.a里面。这句话是没问题,但是这种思路是错的!!!!!

如果是上面的思路,你想要用到libtest1.a或libtest2.a里的函数里,是找不到的!!!

因为liball.a里包含的是libtest1.a和libtest2.a,而gcc找的里.o文件,.o文件里才包含我们写好的方法

所以我们应该这样来写:

制作一个临时文件夹,比如在我们的test文件夹下新建temp文件夹,把从各个.a库导出的.o文件都放到这个文件夹里,再把所以.o文件打成.a库。

命令如下:

cd temp

ar x libtest1.a

ar x libtest2.a

ar rc liball.a *.o

再把liball.a复制出来就可以了。

 

最后:

在这之前我还有一个疑惑是为什么动态库不能包含另一个动态库。

在我说出我的想法之前,想请大家先自行想一下。

还有,如果动态库能包含另一个动态库的话,又会是什么情况。

~~~~~~~~~~~~~~

跳转

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gcc入门及合并静态库 的相关文章

随机推荐

  • Basic Level 1087 有多少不同的值 (20分)

    题目 当自然数 n 依次取 1 2 3 N 时 算式 n 2 n 3 n 5 有多少个不同的值 注 x 为取整函数 表示不超过 x 的最大自然数 即 x 的整数部分 输入格式 输入给出一个正整数 N 2 N
  • PID自控理论(频域bode图理论分析)

    PID 迟后超前矫正 临界比例度法整定PID 在低频区 主要是PI控制器起作用 用以提高系统型别消除或减小稳态误差 在中 高频区 主要是PD控制器起作用 用以增大幅值穿越频率和相位裕度 提高系统的响应速度 因此 PID控制器可以全面地提高系
  • 游戏数据运营--2.新版本效果分析案例

    文本内容如下 游戏B 新版本效果分析 游戏B 2017年1月1日4 0版本效果数据如下 1 新用户登录的激活转化率相比3 9版本提高10 目前为27 2 4 0版本首周日活跃人数比之前提高16 目前日均活跃达到10万人 点卡用户在线时长提高
  • Vuex有那几种状态和属性?

    vuex的流程 页面通过mapAction异步提交事件到action action通过commit把对应参数同步提交到mutation mutation会修改state中对于的值 最后通过getter把对应值跑出去 在页面的计算属性中 通过
  • PCB叠层设计与阻抗计算

    1 PCB叠层设计与阻抗计算 01走个流程 哔哩哔哩 bilibili 2 第十七讲 PCB的电源阻抗自动优化 哔哩哔哩 bilibili 3 32高速PCB设计之叠层与阻抗 阻抗计算案例 哔哩哔哩 bilibili 4 PCB阻抗计算工具
  • 一文读懂开源的7大理念

    原文 https www enmotech com web detail 1 844 1 html 软件正在慢条斯理地吞噬世界 开源正在慢条斯理地吞噬软件业 软件正在吞噬世界 是的 对于购物 吃饭 健身 交停车费都需要使用软件的年代 对于平
  • 一个报表的脚本以及输出结果

    Set up pagesize parameters SET NEWPAGE 0 SET PAGESIZE 55 Set the linesize which must match the number of equal signs use
  • OpenWrt设置开机自动启动/延迟启动

    最近在搞路由器自动登录 用到了OpenWrt的自动启动 因为我要运行的是一个Python程序 一条命令足够 就直接在 etc rc local里面改了 python etc Myprogram py 直接占用前台了 既需要让他后台运行 又不
  • python计算定积分

    求 0 1
  • 外部保存echars图片

    传递图表容器id function downloadImpByChart chartId var myChart echarts getInstanceByDom document getElementById chartId var ur
  • 浅谈当下火热的ChatGPT

    ChatGPT这个词语从今年初发布以来 一度成为一个火热的概念 包括CSDN也推出了C知道 不少大佬博友纷纷蹭热点 发布了无数关于ChatGPT的技术 使用 技能 展望未来的文档和博文 其实很多文章我都没有看过 只知道当下这个工具非常的火
  • 快速入门Spring Cloud Hystrix(服务降级、服务熔断、服务监控)

    文章目录 前言 一 服务雪崩 1 服务雪崩概述 2 造成服务雪崩的原因 3 如何防止雪崩 二 Spring Cloud Hystrix 1 什么是Spring Cloud Hystrix 豪猪哥 2 搭建测试环境 1 创建cloud pro
  • Java 23种设计模式通俗理解

    文章目录 工厂方法 建造者模式 抽象工厂 原型模式 单态模式 适配器模式 桥梁模式 合成模式 装饰模式 门面模式 享元模式 代理模式 责任链模式 命令模式 解释器模式 迭代模式 调停者模式 备忘录模式 观察者模式 状态模式 策略模式 模板方
  • 刀具半径补偿 c语言,数控铣床编程时刀具半径补偿指令及运用

    摘要 本文分析了刀具半径补偿概念及指令 如何灵活和合理地运用刀补值 正确编制加工程序以保证数控加工的有效性和准确性等问题 关键词 数控铣床编程 刀具半径补偿指令 一 刀具半径补偿的概念 在数控铣床上进行轮廓加工时 由于铣刀的刀位点通常是定在
  • mysql查询语句提示Unknown column ‘xxx’ in ‘where clause’

    今天写接口自动化测试 在运行结果中提示Unknown column xxx in where clause 的问题 经过大神的指导 顿时明白其中缘由 如果sql中定义的类型是int型的可以不用加引号 但是如果是字符串类型的 必须加引号 例如
  • C++&QT day1

    思维导图
  • CTF(Web方向练习题)(持续更新)

    1 Training WWW Robots 打开应用场景 如下 网址后面添加 robots txt 查看其中内容 robots协议也叫robots txt 统一小写 是一种存放于网站根目录下的ASCII编码的文本文件 内容如下 根据提示 访
  • numpy.random.choice坑

    numpy random choice 默认是有放回 其中有个 replace 的参数控制 默认是 True 如划分数据集用到 注意重复 Code import numpy as np a np arange 5 print a for i
  • Go-Gateway反向代理,性能比拼Nginx

    前言 在以前的一篇文章 基于Fasthttp实现的Gateway 性能媲美Nginx 中 介绍给大家一款使用Go语言开发的实现反向代理功能的开源项目boot4go gateway boot4go gateway项目以fasthttp作为ht
  • gcc入门及合并静态库

    1 gcc入门 1 gcc即是linux下c c 的编译器 gcc经常用的的选项有 c o c表示只编译 compile 源文件但不链接 会把 c或 cc的c源程序编译成目标文件 二进制文件 一般是 o文件 o用于指定输出 out 文件名