【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月前
|
存储 Linux 开发工具
Linux环境下使用Buildroot配置软件包
使用Buildroot可以大大简化嵌入式Linux系统的开发和维护工作,但它需要对Linux系统和交叉编译有深入的理解。通过上述步骤,可以有效地配置和定制软件包,为特定的嵌入式应用构建高效、稳定的系统。
169 11
|
3月前
|
存储 监控 Linux
Linux环境锁定关键文件防止误删操作流程。
总结以上内容,在Linux环境下锁定重要文档避免误删涉及到多种技术手段与策略组合运作, 包括但不限于利用chatter指挥官固化文档状态至只读模式、运作ACL精准调整访问权利列表、编排自动化流程简
145 20
|
3月前
|
Linux
Linux环境下的UDEV机制及其与守护进程的关联
实际使用时管理员需要熟悉编写合适udev rules去满足特殊需求;同时也需要注意避免编写过度复杂导致无法预料结果rules.UDEVD虽然稳健但错误配置可能导致无法预料问题因此需谨慎处理相关配置工作.
140 16
|
3月前
|
存储 Linux
Linux环境下删除大文件后磁盘空间未释放问题诊断流程。
以上诊断流程涉及Linux底层机制与高级管理技能结合之处,并需要管理员根据实际环境灵活调整诊断策略与解决方案。
258 8
|
4月前
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
329 10
|
3月前
|
Ubuntu 安全 Linux
Ubuntu 24.10 发行版登场:Linux 6.11 内核、GNOME 47 桌面环境
Ubuntu 24.10 还带来了 GNOME 47,增强了性能和稳定性,并引入了新功能。此版本的 Ubuntu 还默认在采用 Nvidia 显卡的硬件上切换到 Wayland,并在支持的硬件上默认使用开源的 Nvidia 560 内核模块。 另外需要注意的是,Ubuntu 24.10 是稳定版本,但作为非 LTS 版本,仅支持 9 个月。
|
3月前
|
安全 Linux 网络安全
Linux系统初步设置本地Git环境和生成SSH密钥的步骤。
现在您的Linux系统已经配置好了Git环境,并创建并添加了SSH密钥,可以安全地与远端仓库进行交互,无论是克隆、推送还是拉取操作。此过程确保了数据传输的安全并使版本控制流程更为顺畅。使用Git时应考虑定期更新并管理您的凭据,以确保安全性。
478 0
|
3月前
|
XML 缓存 Linux
在Linux环境下解决Visual Studio Code字体显示异常和字体替换方法。
解决Linux下VS Code字体显示异常,需要对Linux字体渲染机制有所理解,并对VS Code的配置选项进行合理设置。替换字体时则要通过系统字体配置或VS Code设置来完成。通过上述方法,可以有效地解决字体显示问题,从而提升代码编辑的视觉体验。
464 0
|
4月前
|
Kubernetes Linux 网络安全
Rocky Linux 8.9配置Kubernetes集群详解,适用于CentOS环境
初始化成功后,记录下显示的 `kubeadm join`命令。
259 0