Linux高并发服务器开发 第六天(rwx 对于目录和文件的区别 gcc编译器 动态库静态库)

目录

[1.rwx 对于目录和文件的区别](#1.rwx 对于目录和文件的区别)

[2.gcc 编译器](#2.gcc 编译器)

2.1编译过程

[2.2gcc 的其他参数](#2.2gcc 的其他参数)

3.动态库和静态库

3.1函数库


1.rwx 对于目录和文件的区别

r 文件的内容可以被查看。支持cat、more、head...vim ;目录的内容可以被查看。ls、tree

w 文件的内容可以被添加、修改、删除。vim > >> ;目录的内容(目录项)可以被添加、修改、删除。rm、touch、mv、cp... |

x 可执行、可运行。(可执行程序、脚本);该目录可以被进入。 cd

2.gcc 编译器

2.1编译过程

  1. 预处理: 预处理器
  • 将 源文件,展开 头文件、替换宏(变量宏、函数宏)、替换 空行、空格、table、注释

  • gcc -E hello.c -o hello.i

  • -E: 预处理选项

  • -o:重命名。

  1. 编译:编译器
  • 逐行检查程序中出现的 语法和词法 错误!简单的逻辑错误。------ **==所有编译过程中,最耗时==**

  • gcc -S hello.i -o hello.s

  • -S: 编译选项,如果编译无误,生成 .s 汇编文件。

  1. 汇编:汇编器。
  • 将 .s 汇编 文件中,的所有汇编指令,翻译成二进制机器码。

  • gcc -c hello.s -o hello.o

  • -c: 汇编选项。 无错误检查。机械翻译。

  1. 链接:连接器。-- ld --
  • 将 .o 的目标文件,链接库文件、数据段合并,地址回填。生成可执行文件。

  • gcc hello.o -o hello

  • 此过程无专用参数。 -o 不是连接过程必须使用的参数

2.2gcc 的其他参数

  • -c:只生成目标文件(过程包含:预处理、编译、汇编)

  • -v:查看gcc版本

  • **-I(大i): 指定 头文件所在目录位置。**

  • **-L:指定库文件所在目录位置。**

  • **-l(小L):指定库名。( 去掉前缀lib 和 后缀 .so 或 .a )**

  • -g: 使用gdb调试前,编译程序添加! 加-g编译的可执行文件,带有调试表。给gdb提供调试环境。

  • -Wall:显示所有的 警告信息。

  • -D:在编译期间动态的向程序中,注册变量宏。

  • 例:gcc -o test test.c -D MAX=10

3.动态库和静态库

3.1函数库

  • 本质:一组函数。具有相近的功能或操作同一数据结构。

  • <string.h> : strcpy/strcmp/strcat/strlen/strstr/strchr/strtok ....

  • 自定义库:<mysort.h> : bubble_sort / select_sort/ quick_sort / insert_sort ....

  • 作用:

  1. 代码复用。

  2. 程序积累。

  • 发布形式:
  1. 源码形式:
  • 优点:方便使用者学习和使用。

  • 缺点:1. 保密性差。2. 编译程序耗时。3. 编译受平台、版本限制。

  1. 二进制形式:
  • 优点、缺点,与上述相反。

  • 我们使用的函数: 标准C库:/lib/x86_64-linux-gnu/libc.so.6

相关推荐
大耳朵-小飞象6 小时前
智能调光4巨头争霸!轨道照明如何破局?
运维·智慧城市·智慧路灯·智能照明·楼宇智控·0-10v调光模块
sanzk6 小时前
firefly开发板ubuntu安装ros2下的micro-ROS Agent
linux·运维·ubuntu
努力进修7 小时前
Docker+cpolar 实战:打造灵活可控的远程办公系统
运维·docker·容器
其实防守也摸鱼8 小时前
运维--怎么看接口的请求和返回
运维·学习·网络安全·网络攻击模型·burpsuite·攻防对抗·蓝队
weixin_307779139 小时前
Linux下Nginx故障系统化检查Shell脚本
linux·运维·服务器·nginx·自动化
skyutuzz10 小时前
node安装部署
linux
一次旅行10 小时前
【AI工具】Rust-Based CLI:用 xargs 和并行加速你的 Linux 日常
linux·开发语言·rust
山峰哥10 小时前
数据库工程与索引策略实战指南‌
服务器·数据库·sql·oracle·深度优先
jieyucx10 小时前
Docker 入门第一阶段:建立正确认知与初体验
运维·docker·容器
2501_9259633812 小时前
Hi3516CV610 + MPU6050 DMP 软件 EIS 防抖笔记
linux·运维·服务器