安装问题

linux编译流程

linux开发部分

一般来说著名的linux系统基本上分两大类:
  • RedHat系列:Redhat、Centos、Fedora等
  • Debian系列:Debian、Ubuntu等
RedHat 系列
  • 常见的安装包格式 rpm包,安装rpm包的命令是“rpm -参数”
  • 包管理工具 yum
  • 支持tar包
Debian系列
  • 常见的安装包格式 deb包,安装deb包的命令是“dpkg -参数”
  • 包管理工具 apt-get

linux常见编译流程

makefile概念
makefile有些类似于脚本,通过定义了一系列的规则,指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,并且它也可以执行操作系统的命令
当编译安装源码包时,使用make编译,它会默认找当前目录下的makefile文件,依据makefile中的规则,执行编译安装
makefile可以实现自动化编译,原理上来说,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率
makefile成为了一种被广泛应用于在工程方面的编译方法
  1. ./configure预处理:
这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制
比如./configure –prefix=/usr 意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。
同时一些软件的配置文件你可以通过指定 –sys-config= 参数进行设定。
有一些软件还可以加上 –with、–enable、–without、–disable 等等参数对编译加以控制,
你可以通过允许 ./configure –help 察看详细的说明帮助
  1. make
等同于 make all 它是一个解释makefile中指令的命令工具
执行make时,默认会去(当前文件夹下),找名为Makefile的文件
根据Makefile文件来编译源代码,生成目标文件及可执行文件
在每次使用make时,都会重新生成objects,新产生的object会覆盖旧的objects
  1. make clean:清除编译产生的可执行文件及目标文件(object file,*.o)

  2. make install:将程序安装至系统中。如果原始码编译无误,且执行结果正确,便可以把程序安装至系统预设的可执行文件存放路径

  3. make dist:产生发布软件包,即将可执行文件及相关文件打包成一个tar.gz格式的压缩文件,会在当前目录下生成XXX.tar.gz的文件

  4. make distcheck

相当于make dist命令的进化版
生成发布软件包并对其进行检查,以确定发布包的正确性
它会自动把压缩包文件解开,然后执行configure命令,并且执行make,来确认编译不出现错误,并会在最后提示你软件包是否正确
  1. make distclean: 除了清除可执行文件和目标文件外,把configure所产生的Makefile也清除掉。

Linux开发部分

cmake安装gflags
cd gflags  // 查看当前目录中是否有 CMakeList.txt
mkdir build && cd build
cmake ..
make
make install
离线安装 tar.gz文件
以sox为例
tar -zxvf *** => ./cofigure => make => make install => 下面可以找找到对应的执行文件 => ~/.bashrc 添加 export PATH=***/src:$PATH
指定安装目录:make install DESTDIR=/*/* 或 ./cofigure --prefix=指定安装目录 指定目录下会生成 bin目录, 里面可执行
  • 创造软链接:ln -s dir target # 在windows中git bash的环境不好使
  • curl(commandLine URL)基于URL的文件传输,curl -O -L-O保持下载文件名不变,-L自动重定向URL对应的正确的网站
  • du -sh file # 检查对应文件夹大小
  • vim 格式转换
:set ts=4
:set expandtab
:%retab! :set ts=4
:set noexpandtab
:%retab!

Linux 快捷操作方式

命令行部分

  • history:查看历史命令 Ctrl+a:移到输入命令最前面 Ctrl+e:移到输入命令最后面

Linux make编译的更多相关文章

  1. linux下编译gcc6.2.0

    linux下编译gcc6.2.0 在archlinx的下gcc已经更新到6.2.1了,win10的WSL下还是gcc4.8.官方源没有比较新的版本,于是自己编译使用. GCC6的几个新特性 GCC 6 ...

  2. LINUX下编译安装PHP各种报错大集合

    本文为大家整理汇总了一些linux下编译安装php各种报错大集合 ,感兴趣的同学参考下. nginx1.6.2-mysql5.5.32二进制,php安装报错解决: 123456 [root@clien ...

  3. linux下编译安装vim7.4并安装clang_complete插件

    linux下编译安装vim7.4并安装clang_complete插件 因为debian里软件仓库中下载安装的vim是不支持python写的插件的(可以打开vim,在命令模式先输入:py测试一下),导 ...

  4. linux PHP 编译安装参数详解

    linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...

  5. linux下编译出现空间不足解决办法

    linux下编译出现空间不足解决办法 编译内核出现问题: AS      .tmp_kallsyms1.o .tmp_kallsyms1.S:2: fatal error: when writing ...

  6. linux下编译安装curl

    linux下编译安装curl 1.下载curl git clone https://github.com/curl/curl.git 2.在curl目录下生成configure文件 ./buldcon ...

  7. 如何在Kali Linux下编译Windows Exploit

    前言 微软的Windows在企业或是个人应用领域占据着最大的市场份额,在渗透测试过程中你会经常遇到很多Windows的工作站和服务器.另一方面,大多数渗透测试人员主要使用基于Linux的发行版渗透测试 ...

  8. 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序

    如何用javac 和java 编译运行整个Java工程 (转载)  http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...

  9. linux下编译qt5.6.0静态库——configure配置

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  10. linux下编译安装boost库

    linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...

随机推荐

  1. shell脚本语句

    条件语句 1.if语句 语法格式: if [ expression ] then 命令 elif [ expression ] then 命令 -- else 命令 fi if语句有单分支结构,双分支 ...

  2. 我为 Netty 贡献源码 | 且看 Netty 如何应对 TCP 连接的正常关闭,异常关闭,半关闭场景

    欢迎关注公众号:bin的技术小屋,本文图片加载不出来的话可查看公众号原文 本系列Netty源码解析文章基于 4.1.56.Final版本 写在前面..... 本文是笔者肉眼盯 Bug 系列的第三弹,前 ...

  3. 【FAQ】应用内支付服务无法拉起支付页面常见原因分析和解决方法

    华为应用内支付服务(In-App Purchases)通过简便的接入流程为用户提供良好的应用内支付体验,然而在实际接入过程中,有一些开发者反馈测试时会无法正常拉起支付页面,下文将详细分析问题出现的5种 ...

  4. 基于EasyExcel的大数据量导入并去重

    源码:https://gitee.com/antia11/excel-data-import-demo 背景:客户需要每周会将上传一个 Excel 数据文件,数据量单次为 20W 以上,作为其他模块和 ...

  5. 2022-07-10 第五小组 pan小堂 css学习笔记

    css学习笔记 什么是 CSS? CSS 指的是层叠样式表* (Cascading Style Sheets) CSS 描述了如何在屏幕.纸张或其他媒体上显示 HTML 元素 CSS 节省了大量工作. ...

  6. 把酒言欢话聊天,基于Vue3.0+Tornado6.1+Redis发布订阅(pubsub)模式打造异步非阻塞(aioredis)实时(websocket)通信聊天系统

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_202 "表达欲"是人类成长史上的强大"源动力",恩格斯早就直截了当地指出,处在蒙昧时代即低 ...

  7. 发布 .NET MAUI / MAUI Blazor 应用 (1) - Windows

    发布用于Windows的 .NET MAUI 应用 打开 PowerShell 终端 , 命令行进入工程目录,以我的例子工程为例, cd BlazorMaui BlazorMaui 替换为你自己工程名 ...

  8. Luogu2574 XOR的艺术 (分块)

    本是要练线段树的,却手贱打了个分块 //#include <iostream> #include <cstdio> #include <cstring> #incl ...

  9. java学习第三天常用类.day11

    工具类如何设计,在开发中有两种设计: 工具方法:静态方法的使用 非静态的方法使用: 使用单列模式,为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 保证在整个应用中某一个类有且只有一个实例(一 ...

  10. [CSharpTips]判断两条线段是否相交

    判断两条线段是否相交 主要用到了通过向量积的正负判断两个向量位置关系 向量a×向量b(×为向量叉乘),若结果小于0,表示向量b在向量a的顺时针方向:若结果大于0,表示向量b在向量a的逆时针方向:若等于 ...