栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

【C++】Linux系统编程入门(1)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C++】Linux系统编程入门(1)

文章目录

前言一、GCC

1、什么是GCC2、编程语言的发展3、GCC工作流程4、GCC和G++的区别5、GCC常用参数选项 二、静态库

1、命名规则2、制作步骤3、使用步骤4、优缺点 三、动态库

1、命名规则2、制作步骤3、使用注意4、优缺点 四、Makefile

前言

因为想要准备暑假的实习,所以找了一个牛客网上的Linux多并发服务器项目来跟学跟做

一、GCC 1、什么是GCC

GNU Compiler Collection,GNU编译器套件
即编译器,能够编译C++

2、编程语言的发展

3、GCC工作流程

4、GCC和G++的区别

gcc 和 g++都是GNU(组织)的一个编译器编译阶段,g++ 会调用 gcc,对于 C++ 代码,两者是等价的,但是因为 gcc
命令不能自动和 C++ 程序使用的库联接,所以通常用 g++ 来完成链接 5、GCC常用参数选项


二、静态库

库文件是计算机上的一类文件,可以简单的把库文件看成一种代码仓库,它提供给使用
者一些可以直接拿来用的变量、函数或类。
其中静态库在程序的链接阶段被复制到了程序中;

1、命名规则
libxxx.a

lib:固定的前缀.a:固定的后缀xxx:所起的库名 2、制作步骤

利用gcc -c创建.o文件利用ar rcs libxxx.a xxx.o xxx.o打包.o文件,创建静态库 3、使用步骤

在程序源文件中调用库中的函数gcc -l指定使用的库 4、优缺点

◼ 优点:
◆ 静态库被打包到应用程序中加载速度快
◆ 发布程序无需提供静态库,移植方便

◼ 缺点:
◆ 消耗系统资源,浪费内存
◆ 更新、部署、发布麻烦

三、动态库

GCC 进行链接时,动态库的代码不会被打包到可执行程序中
程序启动之后,动态库会被动态加载到内存中,通过 ldd (list dynamic dependencies)命令检查动态库依赖关系

1、命名规则
libxxx.so

lib:固定的前缀.so:固定的后缀xxx:所起的库名 2、制作步骤

利用gcc -c –fpic xx.c xx.c获得.o文件和与位置无关的代码利用gcc -shared a.o b.o -o libcalc.so获得动态库 3、使用注意

在指定所依赖的动态库的同时,还需要知道绝对路径,对于elf格式的可执行程序,是由ld-linux.so来完成的,它先后搜索elf文件的 DT_RPATH段 ——> 环境变量LD_LIBRARY_PATH ——> /etc/ld.so.cache文件列表 ——> /lib/,/usr/lib目录找到库文件后将其载入内存

所以可以在相应的路径中间添加动态库的位置
e.g.

export LD_LIBRARY_PATH xxx/xxx/xxx或者编辑.bashrc,在其中输入export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/xxx/xxx 4、优缺点

◼ 优点:
◆ 可以实现进程间资源共享(共享库)
◆ 更新、部署、发布简单
◆ 可以控制何时加载动态库

◼ 缺点:
◆ 加载速度比静态库慢
◆ 发布程序时需要提供依赖的动态库

四、Makefile

Makefile 文件定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,一旦写好,只需要一个 make 命令,整个工程完全自动编译,极大的提高了软件开发的效率

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/747860.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号