21 软件与安装 源代码与Tarball

  • GNU计划与GPL授权所产生的自由软件与开放源代码等东西。
  • 前面的章节没有提到真正的开放源代码是什么。
  • 这一章将借由Linux里面的执行文件,
    • 来理解什么是可执行的程序,及了解什么是编译器
    • 与程序息息相关的函数库(library)的内容也需了解一番
  • 这个章节当中,并不是要你成为一个开放源代码的程序员,
    • 希望你可以了解如何将开放源代码的程序设计、
    • 加入函数库的原理、
    • 通过编译而成为可以执行的二进制程序,
    • 最后该执行文件可被我们所使用的一连串过程。

  • Linux里,由于定制化的关系,
    • 有时候需在Linux系统中自行安装软件,
    • 所以如果你有简单的程序编译概念,那么将很容易进行软件的安装。
  • 甚至在软件编译过程中发生错误时,你也可以自行做一些简易操作,
    • 而最传统的软件安装过程,自然就是由源代码编译而来的
  • 所以,这里将介绍最原始的软件管理方式:
    • Tarball来安装与升级管理我们的软件。

21.1开放源码的软件安装与升级简介

  • Windows上安软件时,只要一直给它按下ー步就可安装好
  • 不过,也由于如此,所以在Windows操作系统上面的软件都是模一样的,你【无法修改该软件的源码,因此,万一你想要增加或减少该软件的某些功能时,只能求助于发行该软件的厂商。
  • 或许你说:“我不过是一般人,不会用到多余的功能,所以不太可能会修改到程序代码的部分吧?”
  • 如果你这么想的话,很抱歉,是有问题的。
  • 目前网络上的病毒、黑客软件、木马程序,都可对你的主机上面的某些软件造成影响,导致主机宕机或其他数据损坏等
  • 如果你可借由安全信息单位所提供的自定义方式修改,
    • 那么你将可以很快速地自行修补好该软件的漏洞,
    • 而不必一定要等到软件开发商提供修补的程序包

在这里插入图片描述

  • Linux上面的软件几乎都是经过GPL的授权,
    • 每软件几乎均提供源码,
    • 且你可自行修改
  • 什么是开放源代码呢?这些程序代码是什么东西?
  • Linux上面可以执行的相关软件的安装文件与开放源码之间如何转换
  • 不同版的Linux之间能不能用同一个执行文件?
  • 还是该执行文件需要在源代码的部分重新进行转换?

21.1.1什么是开放源码、编译器与可执行文件

  • Linux上面,一个文件能不能被执行看的是有没有可执行的那个权限(具有x permission),
  • 不过, Linux上真正识别的可执行文件其实是二进制程序
    • 如/usr/bin/passwd、/ bin/touch这些文件即为二进制程序。

  • shell脚本不是也可以执行吗?
  • 其实shell 脚本只是利用 shell(例如bash)这个程序的功能进行一些判断,而最终执行的除了bash提供的功能外,仍是调用一些已经编译好的二进制程序序。
  • bash本身也是一个二进制程序。
  • 怎么知道一个文件是否为二进制呢?

在这里插入图片描述

  • 如果是二进制且是可以执行的时候,
    • 显示执行文件类别(ELF 64-bit LSB executable),
    • 是否使用动态函数库( shared libs),
  • 如果是一般的脚本,就显示text executables之类的字样。

在这里插入图片描述

发布了558 篇原创文章 · 获赞 295 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/zhoutianzi12/article/details/105310060