【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天前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
11 5
|
1天前
|
Java Linux Python
Linux环境下 代码java调用python出错
Linux环境下 代码java调用python出错
12 3
|
1天前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
25天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
3天前
|
Linux 编译器 开发工具
快速在linux上配置python3.x的环境以及可能报错的解决方案(python其它版本可同样方式安装)
这篇文章介绍了在Linux系统上配置Python 3.x环境的步骤,包括安装系统依赖、下载和解压Python源码、编译安装、修改环境变量,以及常见安装错误的解决方案。
17 1
|
1月前
|
前端开发 Linux
深度探索Linux操作系统 —— 构建桌面环境3
深度探索Linux操作系统 —— 构建桌面环境
32 12
|
24天前
|
Shell Linux API
C语言在linux环境下执行终端命令
本文介绍了在Linux环境下使用C语言执行终端命令的方法。首先,文章描述了`system()`函数,其可以直接执行shell命令并返回结果。接着介绍了更强大的`popen()`函数,它允许程序与命令行命令交互,并详细说明了如何使用此函数及其配套的`pclose()`函数。此外,还讲解了`fork()`和`exec`系列函数,前者创建新进程,后者替换当前进程执行文件。最后,对比了`system()`与`exec`系列函数的区别,并针对不同场景推荐了合适的函数选择。
|
3天前
|
Linux Python
linux之部署python环境&创建虚拟环境
linux之部署python环境&创建虚拟环境
|
3天前
|
Web App开发 Linux Python
linux上安装selenium环境及测试
该文章提供了在Linux CentOS上安装Selenium环境、Chrome浏览器及Chromedriver的详细步骤,并演示了如何以无头模式进行测试。
12 0
|
1月前
|
Linux 编译器 C语言
深度探索Linux操作系统 —— 构建桌面环境2
深度探索Linux操作系统 —— 构建桌面环境
26 6