【linux 学习】在Linux中经常用到的cmake、make、make install等命令解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
简介: 【linux 学习】在Linux中经常用到的cmake、make、make install等命令解析

一、背景提要:

  • 最近项目需要在linux系统下进行调试,经常会遇到cmake、make、make install
    以及configure等命令,特意去网上搜了搜区别,发现大多都是复制粘贴的同一内容,然而并无实质性的意义,特此做一个学习记录。

二、先谈谈make和make install

  • 2.1 maake 简单来说就是用来编译链接源文件,它会根据目录中的Makefile文件,对项目文件进行编译和链接生成可执行文件、动态库、静态库等。关于make,最重要的步骤就是学会编写或者学会如何得到正确的Makefile。

如果是程序员自己动手编写Makefile文件会比较麻烦,而且根据编译平台的不同,相应的编译规则也有所不同,具体内容可以查看下面这个例子:(简单版)

https://zhuanlan.zhihu.com/p/47390641

难怪有网友会说:人生苦短,我选择跳过makefile,利用cmake。这点之后会说。


2.2 make install 该命令一般是在安装一些软件或者依赖库(比如编译opencv、ffmpeg等)的时候用到。之前已经提到,在make之后,会生成动态库、可执行文件等,既然我们已经获得了可执行文件,那为什么还需要进行make

install呢?

install:顾名思义就是“安装”的意思。对于一些程序和依赖库,我们不仅需要对其进行编译链接获得可执行文件以及动态库,更需要将其相应的文件拷贝到对应的位置(也是Makefile文件来执行操作的),这样才能够让其他应用进行调用和查找。例如编译opencv源码的时候,执行make

install指令会将一些编译之后的文件拷贝到正确的位置,以便其他的程序可以调用opencv。

PS:对于一般项目的开发而言,make之后得到可执行文件就已经足够了。


三、cmake与make之间不得不说的故事

上面提到Makefile文件的编写较为麻烦,那么我们有没有什么办法能够帮我们写出这个文件呢?

有的,那就是cmake(以及configure)。

cmake的优点在于它不分平台,只要你写好了CMakeLists.txt文件,那么就可以在任何支持cmake的平台上获得其对应的Makefile文件,并且CMakeLists.txt文件的编写难度很低。大家完全可以花不到一个小时的时间掌握如何编写自己的CMakeLists.txt文件。

下面两篇是我今天学习cmake时所看教程,推荐给大家: ①主要讲Cmake语法:

https://blog.csdn.net/u011536013/article/details/92849249

②示例Demo,从易到难:https://blog.csdn.net/zhuiyunzhugang/article/details/88142908

四、殊途同归的configure

Linux经常会遇到两种安装方式,一种是:cmake … make make insatll 另一种就是./configure

make -j8 make install

configure文件是一个脚本,里边有很多的脚本命令,它的作用跟cmake一样,都是生成Makefile文件。(configure是autocof库中的一个指令,必须预先安装autocof以及相应的依赖库)

有一点值得注意的是,两者相比较之下cmake语法较为简洁和易于理解。 可以查看一下configure的语法教程:

https://www.cnblogs.com/xuezhileikaku/articles/5343107.html

五、参考链接

https://blog.csdn.net/qq_27825451/article/details/103392719(一篇写的很不错文章,请结合它和这篇文章一起理解)

2020/7/19 “本站所有文章均为原创,欢迎转载,请注明文章出处:

https://blog.csdn.net/ll15982534415/article/details/107445875。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

相关文章
|
1天前
|
NoSQL 应用服务中间件 Linux
宝塔linux面板命令大全
宝塔linux面板命令大全
11 2
|
1天前
|
JSON Linux 数据处理
探索Linux中的pinky命令:数据处理与分析的得力助手
探索Linux的pinky命令,非标准工具,专用于文本数据处理和分析。提供直观界面,擅长日志、CSV处理。特点包括:易于使用、强筛选、灵活转换和自定义输出。示例:筛选`access.log`中IP为192.168.1.1的记录并转为CSV。注意文件格式、筛选条件、输出格式和性能优化,处理前备份数据。
|
1天前
|
Linux 网络安全 数据处理
探索Linux命令ping:网络诊断的得力助手
`ping`是Linux下的网络诊断命令,基于ICMP协议,用于测试主机连通性和测量延迟。它发送Echo请求并等待响应,显示统计信息如发送/接收包数、丢失率和平均延迟。命令支持配置参数,如`-c`指定发送次数,`-i`设置间隔,`-s`定义包大小。示例包括测试到Google的连通性及定制化测试。注意防火墙可能阻止ICMP流量,排查网络问题时可与其他工具结合使用。
|
1天前
|
安全 前端开发 Linux
深入了解Linux命令pinentry-curses:保护敏感输入的终端工具
`pinentry-curses`是GnuPG的一部分,用于CLI中安全输入密码或PIN。它利用curses库创建一个隐藏输入的终端界面,增强安全性。适用于GnuPG及其它需要安全输入的场景。特点包括安全隐藏输入、用户友好、灵活配置。常用参数如`--password`、`--title`等。在GPG加密文件时,可以结合`--pinentry-mode curses`使用。记得在安全环境下操作,勿明文显示密码,保持软件更新,并使用强密码。
|
1天前
|
安全 Linux Shell
深入探索Linux命令pinentry:安全处理敏感信息的利器
`pinentry`是GnuPG的安全工具,用于安全获取密码等敏感信息,它在终端中显示隐藏输入的提示,确保信息安全。支持交互式操作、多种输入方式,且有丰富的选项,如`--tty`和`--window-title`。示例脚本展示了如何在bash中使用它获取密码。使用时注意环境安全,勿明文显示密码,结合其他工具增强安全性,熟悉参数选项,并考虑备份相关配置。
|
Linux
LINUX编译cmake
LINUX编译cmake
85 0
|
Linux
LINUX编译cmake
LINUX编译cmake
60 0
|
Linux
LINUX编译cmake
LINUX编译cmake
98 0
|
Linux
LINUX编译cmake
LINUX编译cmake
439 0