每个人迟早都要下载程序的源码,然后试着编译它。如果你是RedHat或Debian的忠实追随者,你最终会发现一个程序不是太老就是太新,而去找已经编译过的二进制代码。坏的一方面是这些代码可能无论你怎么做,它们永远不能被正确的编译记住,大多数的Linux程序最多只是beta测试版。

好的一方面是在过去的五年中编译没有问题的程序正在增加,而且即使你不是程序员,你也可以“修复”那些不能正确编译代码。

下载以后,现在你的硬盘上应该有一个某种类型的压缩包。首先,你必须把它解压(uncompress),并把它解包(untar)到一个目录。

在习惯上,很多人都把它们放到这个目录:/usr/src。这样能把所有的东西都放在一个地方,你以后可以清除它们。使用这个目录需要有root身份。如果一个用tar打包的文件是用gzip压缩的,则Linux的tar程序可以同时把它解压和解包。如果你的文件名叫做:filename。

tar。gz,你可以到/usr/src目录,然后键入:

tar -xzvf /{path to file}/{filename。tar。gz} [Enter]

这将会把这个文件解压并解包。这里是几个参数简单的解释:x -把文件解包z -把文件解压v -显示处理过程f -后面跟着你要处理的打包文件名如果你用netscape下载的这个文件,可能会看到错误。

有时netscape会为你解压这个文件。

因此,如果你象上面这样untar它,你可能会看到这样的信息:

gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error exit delayed from previous errors

试着执行上面的命令,但把z参数删掉,就是这样:tar -xvf /{path to file}/{filename。

tar。gz} [Enter] 除了gzip,有些文件是用bzip2来压缩的,因此这些文件看起来象这样the-program。tar。bz2。z参数对这种文件不起作用。解开这种文件最简单的方法就是bunzip2 the-program。tar。

bz2。这样将把使用下面命令解包出来的the-program。tar文件解开:

tar -xvf /{path to file}/{filename。tar。gz} [Enter]

解包以后:cd到刚才解包时创建的那个目录里。用ls看看这个目录里的文件。

首先你应该读读README和INSTALL文件。如果你没读这些文件,不要想从别人那里得到帮助。这是RTFM这个缩写在网上使用很广泛的原因(RTFM是`Read The Fucking Manual'的缩写。README和INSTALL文件将会告诉你如何编译和安装这个程序。

要编译它,执行"make"命令。为了让"make"可以开始编译,必须有个叫Makefile的文件(你也可以通过在命令行上来写入make的参数,但那不在本文的讨论范围只内)有通常三个方法开始编译:simple,Imake和configure。

Simple编译:如果你看到一个叫Makefile的文件——没有叫Imake或configure的文件,那么你就使用这个方法来编译。因为不能为你的计算机设置,所以用这种方法来编译有很多问题。通常README和INSTALL文件会告诉你如何编辑某些文件来使它可以正常编译。

通常,你可以这样做:

make [Enter] make install [Enter]

如果一切正常,那么你现在就可以运行这个程序了。

全部

怎样在Linux系统中编译,Linux操作系统如何编译程序?相关推荐

  1. Linux系统中编译、链接的基石-ELF文件:扒开它的层层外衣,从字节码的粒度来探索

    初次见面 大家好,我是 ELF 文件,大名叫 Executable and Linkable Format. 经常在 Linux 系统中开发的小伙伴们,对于我肯定是再熟悉不过了,特别是那些需要了解编译 ...

  2. Linux系统中编译、链接的基石-ELF文件:扒开它的层层外衣,从字节码的粒度来探索...

    初次见面 大家好,我是 ELF 文件,大名叫 Executable and Linkable Format. 经常在 Linux 系统中开发的小伙伴们,对于我肯定是再熟悉不过了,特别是那些需要了解编译 ...

  3. Linux系统中编译大型C语言项目必备技能之:Makefile文件的编写

    文章目录 Makefile的介绍 Makefile的编写规范--简单举例 Makefile的编写规范--复杂举例 项目描述 编译需求 编译思路 Makefile的介绍 我们在阅读一些大型的C语言项目时 ...

  4. linux系统中变量,Linux系统中的环境变量知识详解

    对于没有使用过linux系统的用户来说,有很多术语和功能都很陌生.本文就介绍了linux系统中的环境变量的相关知识,具体内容如下所述. linux是一个多用户的操作系统.每个用户登录系统后,都会有一个 ...

  5. 交叉编译工具32位在64位的Linux系统中编译

    1. 问题描述 将交叉编译工具链拷贝到新的虚拟机(Ubuntu16系统)中发现出现编译工具文件不存在的报错.一开始以为是由于公司电脑加密,拷贝下来有问题,无法识别,最后和同事讨论,发现是系统和交叉编译 ...

  6. 进程在linux系统中原理,Linux系统原理知识 进程切换的概念介绍

    一.tast_struct结构 它是一个数据结构,可以说,它代表了一个进程.它有很多字段,大体有一下几种: 标识号:进程标识.用户标识.组标识. 状态: Linux的进程的四种基本状态 调度信息:优先 ...

  7. Linux系统中常见文件系统格式

    Linux系统中常见文件系统格式 Windows常用的分区格式有三种,分别是FAT16.FAT32.NTFS格式. 在Linux操作系统里有Ext2.Ext3.Linux swap和VFAT四种格式. ...

  8. dragon编译linux,在Linux系统中安装Alibaba Dragonwell8的方法

    本文介绍在Linux系统中安装Alibaba Dragonwell8的方法,包括更新方法.它是阿里巴巴自己的JDK,是OpenJDK的下游版本,完全开源.以下在Ubuntu 18.04上经过了测试,也 ...

  9. linux系统创建操作系统用户,linux系统中用户组创建管理linux操作系统 -电脑资料...

    用户组管理包括对用户组创建,删除,修改及查看组操作命令,下面我们一起来看看希望本文章对各位同学会有所帮助哦, 1,创建组 groupadd test 增加一个test组 2,修改组 groupmod ...

最新文章

  1. js layui 模板属性 添加_layui.laytpl--模板引擎文档
  2. 创始人CEO该拿多少工资?
  3. iOS设计模式 - 享元
  4. gogs可以自动化部署吗_三千、五千平方的仓库房可以用自动化立体仓库吗?
  5. mac自带的python怎么升级_mac上怎么更新python
  6. 模仿$.Callbacks实现
  7. angulajs--入门基础
  8. Deep Learning Tutorial - Multilayer perceptron
  9. 数据结构之搜索算法二:二叉搜索树
  10. 说下我常用的几个精简版系统的感受
  11. aliez歌词_请问aLiez完整版中文 +罗马音歌词
  12. 关于rollup 和cude 举例浅分析
  13. 80个Python经典资料(教程+源码+工具)汇总
  14. 新浪微博广告形式全攻略
  15. hbuilder案例-仿微信界面
  16. 双搜----用两只眼睛看世界
  17. 秋招提前批已来,万字长文教你如何增加面试大厂的成功率
  18. Node的json解析
  19. ZOJ 3587 Marlon's String 扩展KMP
  20. 操作系统(四)操作系统的主要功能

热门文章

  1. 3个步骤,4大平台,完成大规模数据处理
  2. 32.Docker安装MongoDb
  3. SPListItem.Update() 与 SPListItem.SystemUpdate()区别
  4. Coding Interview Guide -- 数组的partition调整
  5. TCP/IP详解学习笔记-基本概念
  6. Protocol buffer的使用案例
  7. MVC3 在提交表单以后 return View(model) 页面不会根据model的内容更新表单
  8. mysql的几种插入语句_Mysql 几种常见的插入 Insert into,Replace Into,Insert ignore
  9. python类中的函数_python类中的函数问题
  10. linux内核合并dtb文件,c – 如何修改内核DTB文件