【Linux】Linux环境基础开发工具_4

简介: 【Linux】Linux环境基础开发工具_4

四、Linux环境基础开发工具

gcc和g++

动静态库的理解

动态库的优点:比较节省资源,不会出现太多重复代码。

动态库的缺点:对库的依赖性比较强,一旦库丢失,所有使用这个库的程序都无法运行。

静态库的优点:不依赖库,同类型平台中都可以直接使用。

静态库的缺点:可执行程序体积比较大,比较浪费资源。

怎么静态链接呢?可以在gcc后面加上 -static 选项

由于云服务器里面默认没有安装静态库,所以我们在使用静态库前需要手动安装一下静态库。

sudo yum install -y glibc-static libstdc+±static

动态链接gcc 的默认链接方式。

make和Makefile

make 是一个命令,makefile 是一个文件。makefile里面存的是不同文件之间的依赖关系个依赖方法。

注意第二行是一个 tab ,不是空格!

mybin(目标文件):mytest.c(依赖文件列表)

使用 make 可以构建项目,那怎么清楚项目呢?我们需要在 Makefile 里面加点东西。

为什么我们 make 的时候不需要指定名字呢?而执行 make clean 则需要带上 clean ?其实是,make 默认的是 Makefile 文件里的从上往下第一个目标文件,所以不需要写 make mybin 的后半部分。而且我们发现make的时候并没有执行 make clean ,所以我知道: make 默认只执行一个,

当依赖文件未被更新的时候,是无法多次 make 的,如果想要使其 mybin 能够总是被执行,可以在 Makefile 里加上:

但是不建议将目标文件修饰成一个伪文件。更建议将 clean 给修饰成一个伪文件。

以后修改Makefile的时候,只需要修改上面那部分变量就可以了。

Linux小程序—进度条

注意先测试自己写的 Makefile 是否能用。接下来继续编写 mytest.c 文件。

但是明明是 printf 先执行,为啥先 sleep 呢?其实 printf 其实已经跑完了,只是被缓冲区保存起来了,直到程序退出的时候才被刷新出来。

我们继续写 mytest.c 文件:

当然我们要做的是进度条而不是倒计时,我们这里还只是知识储备而已。

1 #include <stdio.h>
  2 #include <unistd.h>
  3 #include <string.h>
  4 
  5 #define MAX 101
  6 #define LABLE '#'
  7 
  8 int main()
  9 {
 10   char bar[MAX];
 11   memset(bar, '\0', sizeof(bar));
 12   int i = 0;
 13   while (i <= 100)
 14   {
 15     printf("%s\r", bar);
 16     // 刷新缓冲区
 17     fflush(stdout);
 18     bar[i++] = LABLE;                                                                                
 19     // 微秒级别
 20     usleep(100000);
 21   }
 22   printf("\n");
 23   return 0;
 24 }

到这里还没有结束,我们下篇再实现更加精细的进度条。


未完待续

目录
相关文章
|
1天前
|
Ubuntu Linux Shell
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
(已成功解决)Linux环境报错—bash: wget: command not found;常见Linux发行版本,Linux中yum、rpm、apt-get、wget的区别;Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
|
28天前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
34 4
|
2月前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
418 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
1月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
95 3
|
1月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
45 3
|
2月前
|
Ubuntu 应用服务中间件 Linux
Linux下搭建Nginx环境的搭建
Linux下搭建Nginx环境的搭建
70 6
|
1月前
|
Linux UED iOS开发
|
2月前
|
监控 Linux 云计算
Linux操作系统在云计算环境中的实践与优化###
【10月更文挑战第16天】 本文探讨了Linux操作系统在云计算环境中的应用实践,重点分析了其在稳定性、安全性和高效性方面的优势。通过具体案例,阐述了Linux如何支持虚拟化技术、实现资源高效分配以及与其他开源技术的无缝集成。文章还提供了针对Linux系统在云计算中的优化建议,包括内核参数调整、文件系统选择和性能监控工具的应用,旨在帮助读者更好地理解和应用Linux于云计算场景。 ###
54 3
|
2月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
505 3
|
2月前
|
Unix Linux Go
Linux 使用Yum安装Go和配置环境
Linux 使用Yum安装Go和配置环境
下一篇
DataWorks