Linux gcc 制作静态库01

制作步骤

  1. 编译为 .o 文件
createliba目录下
结构为
├── head
│   └── test.h
├── jia.c
├── jian.c
├── cheng.c
├── chu.c
这4个源文件,提供 + - * /算数运算, 使用了 head目录下 test.h文件
先编译为.o文件
gcc -c *.c -I./head
ls
cheng.c  cheng.o  chu.c  chu.o  head  jia.c  jian.c  jian.o  jia.o
  1. 将 .o文件 打包
ar rcs libxxx.a file1.o file2.o file3.o ...
比如我做的实验是:
ar rcs libjjcc.a *.o
  1. 将头文件与库一起发布
    这里我把头文件 head/test.h 与步骤2生成的libjjcc.a
    cp到testliba目录下
└── testliba├── app├── libjjcc.a├── main.c└── test.h

cat main.c

#include "test.h"
int main() {int a = jia(3, 5);printf("3 + 5 = %d", a);
}

编译main.c

gcc main.c -o app -L ./ -l jjcc (其中-L,指定库目录, -l是指定库名)
生成app可执行文件
nm libxxx.a 查看打包的静态库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 18的中文界面切换《图解教程》亲测成功

然后找到Chinese simple 把汉语挪到第一行

linux gcc 制作动态库

编译与位置无关的代码,生成.o,关键参数 -fPIC createlibso目录下 ├── cheng.c ├── chu.c ├── head │ └── test.h ├── jia.c └── jian.cgcc -fPIC -c *.c -I ./head在createlibso目录下生成 与位置无关的.o文件 ├── cheng.c ├…

Ubuntu的中文是哪种字体?python的词云分析和 三国演义人物出场统计

Ubuntu的默认中文是哪种呢? fc-list :langzh 用这个命令查看出来 NotoSerifCJK-Bold.ttc 为什么要知道这个呢? 来看一块python3代码 import jieba import wordcloudf open("threekingdom.txt","rb") t f.read() f.close() ls …

linux 系统课程-进程控制01

进程的状态转化 进程拥有四种状态(切换),他们之间的关系如图 运行 挂起 终止 就绪内存管理单元 MMU (Memory Management Unit) mmu 负责 a. 虚拟内存与物理内存的映射 b. 设置内存的访问级别 pcb 进程控制块 环…

linux c++ 多进程初步01

fork函数 fork函数 ps ajx 这个命令可以查看进程与进程之间的血缘关系 kill 给进程发送一个信号SIGKILL 9号信号kill -SIGKILL pik 杀死进程进程共享 子进程会复制父进程的几乎所有信息:子进程复制父进程用户空间所有数据; 子进程复制父进程内核空间P…

Ubuntu怎么设置桌面快捷方式(图片详解)

然后找到你要的copy然后到桌面,点开然后允许权限!就搞定了

linux C++ 多进程初步02

ps:疑惑的地方,1 进程pcb的概念, 还有 ulimit -a 显示的信息 是一个进程可以最大占用资源的上限吗? 还有 文件描述符的概念?? 这里不是很明白!记录一下2还有WIFEXITED 孤儿进程 与僵尸进程 孤儿进程&#…

Linux C语言C++ makefile文件编写

ps: 这里 不是很明白&#xff1f;尤其是 后面 三个变量&#xff0c;什么区别&#xff1f; $ 代表目标 $^ 代表全部依赖 $< 第一个依赖 $? 第一个变化的依赖 makefile makefile 命名规则makefileMakefilemakefile 三要素目标依赖规则命令 写法&#xff1a; 目标:依赖 tab键…

Ubuntu升级

apt-get update: 升级安装包相关的命令,刷新可安装的软件列表(但是不做任何实际的安装动作) apt-get upgrade: 进行安装包的更新(软件版本的升级) apt-get dist-upgrade: 进行系统版本的升级(Ubuntu版本的升级) do-release-upgrade: Ubuntu官方推荐的系统升级方式,若加参数-…

软件工程学习笔记《一》什么是软件工程

文章目录软件工程学习笔记目录软件工程过程软件工程方法软件质量软件质量如何评价软件的质量模型ISO9126模型易用性&#xff1a;效率可维护性可移植性为什么内存缓冲区是2048或4096软件工程学习笔记目录 [https://blog.csdn.net/csdn_kou/article/details/83754356] 单纯摆出一…

linux C语言 文件相关知识01

ps:文件描述符表&#xff0c;与文件指针 有什么联系&#xff1f;&#xff1f;&#xff1f; 1. linux 系统&#xff0c;一般一个进程 允许打开的最大文件数量是 1024&#xff0c; 对应内核区的进程控制块&#xff08;pcb&#xff09;中的文件描述符表的范围&#xff0c; 在shell…

linux 系统函数调用:open close read write lseek

open函数 查看函数原型 man 2 open #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);相关参数用法介绍&#xff1b; a. pathname …

PyCharm安装和配置教程

文章目录官网链接错误类型&#xff01;1.你的用户名是中文解决方案PyCharm的汉化和配置PyCharm的简单使用入门PyCharm和git安装教程官网链接 www.jetbrains.com 错误类型&#xff01;1.你的用户名是中文 安装第一次各种问题&#xff01;就不多了&#xff0c;反正各种报错 原…

linux 进程通信 pipe

pipe函数 管道函数 man pipe #include <unistd.h> int pipe(int pipefd[2]);参数介绍&#xff1a;pipefd读写文件描述符&#xff0c;0-代表读&#xff0c; 1-代表写父子进程实现pipe通信&#xff0c;实现ps aux | grep bash 功能 经常出现的问题&#xff1a; 父进程认为…

软件工程学习笔记《二》代码规范

文章目录软件工程学习笔记目录google代码规范节选python来自google翻译错误注释的示例命名规范import语句的规范import this 源码软件工程学习笔记目录 [https://blog.csdn.net/csdn_kou/article/details/83754356] google代码规范 https://github.com/google/styleguide 节…

Linux 进程通信之FIFO

FIFO通信&#xff08;first in first out&#xff09; FIFO 有名管道&#xff0c;实现无血缘关系进程通信。 ----创建一个管道的伪文件 a.mkfifo testfifo 命令创建 b.也可以使用函数int mkfifo(const char *pathname, mode_t mode); ----内核会针对fifo文件开辟一个缓冲区&…

PyCharm和git安装教程

文章目录先到官网下载git进入setting&#xff0c;如黄色部分如果你用的是github那么直接setting登陆就行了如果你是gitee的话首先进入setting然后Plugins点击browse查找gitee如图所示&#xff01;最后点击重启ok《不要自己关闭&#xff0c;否则安装失败》安装好了以后,输入你的…

linux 进程通信子mmap

mmap 文件–内存映射 函数原型 #include <sys/mman.h>void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);参数介绍&#xff1a; add 传 NULL length 映射区的长度 protPROT_READ 可读PROT_WRITE可写 flagsMAP_SHARED 共享的&#xff0c…

malloc和calloc的区别

是否对申请的区域进行初始化而已 但是我想你也知道我们写程序的时候多用malloc而很少用calloc&#xff0c;何解&#xff1f; 因为calloc虽然对内存进行了初始化&#xff08;全部初始化为0&#xff09;&#xff0c;但是同样也要降低效率的 calloc相当于 p malloc(); memset(p,…