GVKun编程网logo

Make Games with Python & Pygame (1)

4

本篇文章给大家谈谈MakeGameswithPython&Pygame(1),同时本文还将给你拓展'makeclean'仍然无法重新制作后,'make:Nothingtodofor'提出,MacOS、

本篇文章给大家谈谈Make Games with Python & Pygame (1),同时本文还将给你拓展'make clean' 仍然无法重新制作后,'make: Nothing to do for' 提出,MacOS、./configure & make & make install 知其所以然、./configure && make && make install、./configure && make && make install详解等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Make Games with Python & Pygame (1)

Make Games with Python & Pygame (1)


看见这本书很有意思,利用Python和Pygame模块进行游戏开发,边学习边翻译边写心得。

 

http://download.csdn.net/detail/abclixu123/4582805 这是真本书的下载地址。


第二章介绍Pygame的一些基础知识。开始也是以经典的Hello World开始。所用的开发环境就是安装Python后自带的IDLE。

HelloWorld程序如下:

import pygame, sys
from pygame.locals import *

pygame.init()
DISPLAYSURF = pygame.display.set_mode((400,300))
pygame.display.set_caption(''Hello World'')
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()

 

这个程序运行后就是一个简单的黑色窗口。

对这个程序有几点说明

  • 需要包含Pygame模块,即import  pygame
  • 在进行任何具体的Pygame的操作之前,都要进行Pygame的初始化,即pygame.init()
  • DISPLAYSURF = pygame.display.set_mode((400,300)) 这句创建pygame显示的主窗口,400宽,300高,如上图显示所示。
    而且要注意的传递是个含有两个整数的元组变量,不是分开的两个整数。
  • pygame.display.set_caption(''Hello World'') 这句就是设置窗体的名字
  • 在一个循环中,我们处理事件消息,pygame.event.get()得到我们与之交互的事件
  • 最后更新窗口(根据事件处理)

其实这个循环就很能说明一个游戏的处理机制了,在这个循环里要做三件事情

  • 处理事件
  • 更新游戏状态
  • 将更新的游戏状态显示到屏幕上

文章接着简单介绍了像素坐标系,这个比较简单。(略)

接着提醒了下函数,方法,构造函数和模块中的函数的区别,牵涉到语言了(略)

Surface对象和窗口

Surface对象其实就代表了矩形的2D图像,Surface对象的像素可以通过调用Pygame的画图函数改变。窗口边框,标题栏,按钮这些都不是Surface对象的一部分。Surface对象是通过pygame.display.set_mode()函数返回的,被称作显示窗口。任何在这个对象里面画的东西都会被显示在窗口中当调用pygame.display.update()函数。

帧:通常游戏跑1秒30帧就足够了。

Colors

任何颜色都可以由颜色有红,绿,蓝三原色组合构成。在Pygame中,用含有三个整数的元组来代表颜色。如(R,G,B),比如这个元组的第一个值代表红色。0表示一点也没有红色,255表示这个颜色里面红色有最大值。通常称这个元组为RGB值。

可以这样定义一个颜色:

BLACK = (0,0,0)

下表是常见颜色值:

透明颜色

 在每个颜色的最后可以跟一个值,被称做a值。它代表这个颜色的不透明程度。一般当你啊把一个像素点画进surface对象中,新的颜色会完全的替代先前的颜色。但是如果颜色有a值的话,你就是把这个颜色添加到先前的那个颜色值。比如绿色(0,255,0)现在如果我们添加了第四个整数a值,我们可以让其绿色看起来一半透明(0,255,0,128)。a值为255时表示完全不透明。也就是(0,255,0)与(0,255,0,255)看起来是一样的。a值为0说明颜色完全透明,此时是没有意义的,因为这个颜色完全透明而不可见。

为了作画时能用到透明颜色你必须创建一个surface对象通过convert_alpha()方法。下面的例子代码就是创建了一个surface对象使其透明色可以被显示

anotherSurface = DISPLAYSURFconvert_alpha()

anotherSurface这个对象可以被复制到DISPLAYSURF。重要的一点是不能使用透明颜色到不是通过调用convert_apha方法返回的Surface对象上,包括来自pygame.display.set_mode()返回的显示窗口对象。

pygame.Color对象

表示颜色有两种方法,一个使用三个整数或四个整数的元组,另外一个就是使用pygame.Color对象。可以通过调用pygame.Color()构造函数和传递3个或4个整数值来创建一个Color对象,然后用一个变量储存这个对象。就像下面这样。

myColor = pygame.Color(255,0,255,128)

在pygame里面任何画图函数都会让传递一个颜色参数值,可以通过元组或者Color对象来传递。所以我们有两种方法来创建一个颜色。

 

Rect对象

Pygame有两种方法表示矩形,就像表示颜色一样。第一种方法是使用4个整数值的元组。

这四个整数分别是:

左上角X坐标值

左上角Y坐标值

矩形的宽度(以像素点为单位)

矩形的高度(以像素点为单位)

第二种方法就是使用pygame.Rect对象。下面就是创建一个Rect对象的例子

myRect = pygame.Rect(10,20,200,300)

很方便的是,当我们创建好Rect对象后,关于这个矩形的其它一些参数就自动被计算好了。比如我们现在一个矩形X左上角坐标为10,而且有200像素宽度,那么我们可以通过Rect对象的right属性来获取X右上角坐标值,如myRect.right

下图是pygame.Rect对象提供的所有属性,这里假如Rect对象由myRect变量储存。

'make clean' 仍然无法重新制作后,'make: Nothing to do for' 提出,MacOS

'make clean' 仍然无法重新制作后,'make: Nothing to do for' 提出,MacOS

如何解决''make clean'' 仍然无法重新制作后,''make: Nothing to do for'' 提出,MacOS

我当前的操作系统是 MacOS。我使用“zsh”作为我的默认 Shell。

我正在尝试编译一个名为“OpenCalphad”OpenCalphad 的软件。 (它是用 Fortran 编写的)。由于某些原因,我想重新编译它。所以我使用了 make clean 命令,然后使用了 make Makefile-MacOS。但它显示 ma​​ke: nothing to do for `Makefile-MacOS''

谁能给我一些建议?非常感谢您的帮助!!

./configure & make & make install 知其所以然

./configure & make & make install 知其所以然

最近一直在类 unix 系统上(Ubuntu 和 Mac OS)上调研第三方的一些开源库,要涉及到开源库的编译安装工作,接触最多的就是./configure & make & make install。

以前我们在 Windows 上进行开发的过程中,使用 Visual Studio 打开 sln 直接一个按钮就编译生成最终的可执行文件,具体的编译过程不得而知,而在类 unix 系统中这些过程都得自己来搞,麻烦是麻烦了些,但是能学到深层次的知识。

GNU 构建系统(GNU Build System)主要是指通过 autoconf、automake 和 libtool 这三个工具构建出来的软件结构体系,又名 Autotools。

GNU 构建系统是利用脚本和 make 程序在特定的平台上构建软件的过程。一般过程是./configure,make,make install 三部曲。这种方式成为一种习惯,被广泛使用。

一般 github 上的开源项目都提供了使用这套构建系统的入口,要么是使用 make 程序,要么是使用更高级点的 cmake。

下图(来自维基百科)展示了 GNU 构建体系编辑和使用的流程:浅蓝色矩形作为处理工具的输入,椭圆作为处理工具,最终的浅绿色矩形为最终的可执行文件输出。

最关键的一部就是生成 makefile 文件,之后调研 make & make install 只是常规的步骤。

其中 congure.ac、makefile.am 是库作者最好必须提供的。

 

 

在 ubuntu 上可以使用 sudo apt-get autoconf automake libtool 来安装 AutoTools。

接下来,我们来看两个开源库例子:

  • gperftools:google 性能工具集合,包括 heap checker、heap profiler、tcmalloc 以及 cpu profiler。

  

  里面有个 shell 脚本文件 autogen.h,用于产生 configure 脚本,进而使用 configure 脚本来生成 makefile 文件,autogen.h 内容如下:

  

  仔细点看,不是使用的我们上面所说的 autoconf,而是 autoreconf,从最开始的一幅图可知,autoconf 接收 aclocal.m4 以及 configure.ac 作为输入,这事先需要使用 aclocal 工具来生成 aclocal.m4,是有个先后顺序的,如果 autoconf 接收的输入多了,先后顺序也就会增多,不方便管理。而此时 autoreconf 则显现出作用,它是一个辅助工具,可以将上述所述的先后顺序自动地以正确的顺序调用,而不用关心具体的细节,简直是方便了太多。

   执行 autoconf(这里执行的是 autogen.sh 脚本)就生成了我们的 configure 脚本,直接调用./configure 就可以生成我们的 makefile 了,当然,如果需要定义一些细节,则可以在./configure 后添加选项参数(./configure -help 查看可以自定义哪些选项),最后就是 make&make install 了。

  • thrift:apache 的 rpc 框架

   

   提供的文件和上面的 gperftools 差不多,多了 CMakeLists.txt 告知我们可以使用 cmake 的方式来构建,但最终还是要生成 makefile 文件,这里有一个 shell 脚本文件 bootstrap.sh 需要重点看下:

  

   可以看到,最后执行的 autoscan、aclocal、autoheader、autoconf、automake,说的还是最开始图中所说的那个流程,都能走到生成 makefile 的一步。

  ./configure & make & make install 三部曲,万变不离其宗!

  上面通过梳理学习,了解了开源项目的大致文档结构,如果我们自己搞开源库,也可以这样来组织,可参考例解 autoconf 和 automake 生成 Makefile 文件。

./configure && make && make install

./configure && make && make install

安装原码程序时,都要执行三步:
1./configure 
2 make 
3 make install

他们是什么意思呀?

这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。

./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本
make是用来编译的,它从Makefile中读取指令,然后编译。
make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。

AUTOMAKE和AUTOCONF是非常有用的用来发布C程序的东西。如果你也写程序想使用AUTOMAKE和AUTOCONF,可以参考CNGNU.ORG上的相关文章。


http://www.gnu.org/software/automake/manual/html_node/Autotools-Introduction.html

./configure && make && make install详解

./configure && make && make install详解

在Linux中利用源码包安装软件最重要的就是要仔细阅读安装包当中的README  INSTALL两个说明文件,这两个文件会清楚的告诉你如何可以正确的完成这个软件的安装!

         我们都知道源码包安装分为这么几个阶段,
1、  ./configure:“configure”会在你的系统上测试存在的特性   Make:编译程序。
5、 cd:进入到这个源码包。
 
 
现在ls一下mrtg这个目录下多了一个蓝色字体的httpd-2.2.11这个目录,这个目录就是我们刚解压开的,然后cd进入到这个目录下面!如果不进入到这个目录下而是直接./configure则会出现下图的提示!
 
3、 bug!)然后来建立Makefile文件来完成make!
 
“configure”脚本有大量的命令行选项,对不同的软件包来说,这些选项可能会有变化,但是许多基本的选项是不会改变的。而我们用的最多的也就是下面这条命令:
./configure --prefix=/软件要安装的路径
但是我们也可以直接./configure而不指定路径,通常通过从源码包编译安装的软件默认路径都是/usr/local/,如果./configure不成功而直接去make的话,就会出现下图的错误:
 
当我们解决完./configure的错误,然后重新./configure成功后,我们就可以编译程序了!
再说几个能关系到能否编译成功的文件:/etc/ld.so.conf、ldconfig
首先说一下/etc/ld.so.conf,这个文件中记录的编译时使用的动态链接库的路径,默认情况下编译器只会使用/lib和/usr/lib这两个 目录下的库文件,如果你安装了其他的库,那么安装完成后就在/etc/ld.so.conf把这个库文件中的绝对路径写进去就OK了。
再来看看ldconfig是个什么东西吧:
他是一个程序,它的作用就是将/etc/ld.so.conf中的路径缓存到/etc/ld.so.cache中,因此在安装完一些库文件或者修改 ld.so.conf增加新的路径后需要运行一下/sbin/ldconfig使所有的库文件都缓存都ld.so.cache中,如果没有运行/sbin /ldconfig,即使库文件就在/etc/ld.so.conf中,也是不会被使用的,结果在编译的过程中同样报错缺少XXX库!
4、Make:编译程序。
 
在编译的时候,gcc个版本之间存在着差异,所以有时候用不同版本的gcc去编译,有的版本能编译成功,有的就编译失败,这样的错误只是版本问题。
另外在make的时候会出现的另一个错就是比较难办的,遇到这样的问题就只能凭经验查找原因,比如说某个头文件没有找到,这个时候就要顺着出错的位置一行一行的往上找,比如显示XXXXXX.h………no such file or directory,说明缺少头文件,或者找到你觉得有价值的错误信息去搜索引擎里搜索,从这里可能会找到对你有用的信息,最重要的就是在安装之前仔细的去看README、INSTALL文件,这两个文件里会告诉你程序应该怎样去安装,需要什么依赖文件等等。
有的时候在编译时不知道是否编译成功,而在没有编译成功就去make  install肯定会出错,这样就增加了问题的复杂性,俗话说的好“道高一尺魔高一丈”,这样我们可以在make结束的时候通过一条命令来检查是否成功编译:echo  $?
 
输入这条命令回车后,输出的结果是0,那么就说明成功编译,否则就是出错了,echo  $?表示检查上一条命令的退出状态,程序正常退出返回0!
5、<span times="" new="" roman''"="">  Make install:安装文件!
 
它也从Makefile中读取指令,然后安装到指定的位置。
看到上图输出0之后我们就可以make  install来安装了,运行完之后输入echo  $?检查看看是否有错误,只要输出结果为0,那就说明我们的安装成功,我们可以测试一下,把Apache的服务起来/usr/local/apache2/bin/apachectl start,因为Apache的端口是80所以我们netstat -lan | grep 80来看看80端口处于监听状态不:
 
然后再IE里输入服务器的IP地址 http://10.10.234.203/
 
成功了,说明我们的安装没问题!
其实./configure、make、make  install这三个命令,我们可以用&&来把命令连接起来执行,表示当前一条命令正常结束后,后面的命令才会执行,这个办法很好,既节省时间,又可以防止发生错误。例:
./configure  &&  make  &&  make  install
 

正常的编译安装/卸载:

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。
 
configure文件是一个可执行的脚本文件,它有很多选项,在待安装的源码目录下使用命令./configure –help可以输出详细的选项列表。
 
其中--prefix选项是配置安装目录,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。
 
如果配置了--prefix,如:
$ ./configure --prefix=/usr/local/test
 
安装后的所有资源文件都会被放在/usr/local/test目录中,不会分散到其他目录。
 
使用--prefix选项的另一个好处是方便卸载软件或移植软件;当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;而移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统下)。
 
当然要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是Makefile文件有uninstall命令(nodejs的源码包里有uninstall命令,测试版本v0.10.35)。
 

关于卸载:

如果没有配置--prefix选项,源码包也没有提供make uninstall,则可以通过以下方式可以完整卸载:
 
找一个临时目录重新安装一遍,如:
$ ./configure --prefix=/tmp/to_remove && make install
 
然后遍历/tmp/to_remove的文件,删除对应安装位置的文件即可(因为/tmp/to_remove里的目录结构就是没有配置--prefix选项时的目录结构)。
 
 
 
如果有rpm包的话尽量避免使用源码包安装,linux的rpm包管理工具很强大,方便管理。
如果必须要用源码包安装,请在安装的时候指定--prefix安装目录,另外安装的时候请使用
make >& LOG_make &
make install >& LOG_install & 
用于保存安装信息日志,这样需要卸载的时候方便查看哪些文件安装在了系统目录中,例如/usr/lib下的库文件。

常见的反安装target有: make uninstall/distclean/veryclean 等等。如果没有,
不是每个源代码包都提供make uninstall的,这不是个通用方法
 
如果安装的时候指定了prefix,直接删除就好。如果没有,并且源代码没有提供make uninstall/distclean/veryclean的功能,我一般这样做:
找一个临时目录重新安装一遍。比如
./configure --prefix=/tmp/to_remove && make install
然后遍历/tmp/to_remove里的文件,把你原来安装位置的文件都删除。

这样的坏处是有些文件夹还可能删除不了(分不清是系统的还是安装上的)
 Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不 离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。
    与一些技巧相比,Configure显得基础一些,当然使用和学习起来就显得枯燥乏味一些,当然要成为高手,对基础的熟悉不能超越哦。
为此我转载了一篇关于Configure选项配置的详细介绍。供大家参考
''configure''脚本有大量的命令行选项.对不同的软件包来说,这些选项可能会有变化,但是许多基本的选 项是不会改变的.带上''--help''选项执行''configure''脚本可以看到可用的所有选项.尽管许多选项是很少用到的,但是当你为了特殊的需求而 configure一个包时,知道他们的存在是很有益处的.下面对每一个选项进行简略的介绍:
--cache-file=FILE
''configure''会在你的系统上测试存在的特性(或者bug!).为了加速随后进行的配置,测试的结果会 存储在一个cache file里.当configure一个每个子树里都有''configure''脚本的复杂的源码树时,一个很好的cache file的存在会有很大帮助.
--help
输出帮助信息.即使是有经验的用户也偶尔需要使用使用''--help''选项,因为一个复杂的项目会包含附加的选项.例如,GCC包里的''configure''脚本就包含了允许你控制是否生成和在GCC中使用GNU汇编器的选项.
--no-create
''configure''中的一个主要函数会制作输出文件.此选项阻止''configure''生成这个文件.你可以认为这是一种演习(dry run),尽管缓存(cache)仍然被改写了.
--quiet
--silent
当''configure''进行他的测试时,会输出简要的信息来告诉用户正在作什么.这样作是因为 ''configure''可能会比较慢,没有这种输出的话用户将会被扔在一旁疑惑正在发生什么.使用这两个选项中的任何一个都会把你扔到一旁.(译注:这两 句话比较有意思,原文是这样的:If there was no such output, the user would be left wondering what is happening. By using this option, you too can be left wondering!)
--version
打印用来产生''configure''脚本的Autoconf的版本号.
--prefix=PEWFIX
''--prefix''是最常用的选项.制作出的''Makefile''会查看随此选项传递的参数,当一个包在安装 时可以彻底的重新安置他的结构独立部分. 举一个例子,当安装一个包,例如说Emacs,下面的命令将会使Emacs Lisp file被安装到"/opt/gnu/share":
$ ./configure --prefix=/opt/gnu
--exec-prefix=EPREFIX
与''--prefix''选项类似,但是他是用来设置结构倚赖的文件的安装位置.编译好的''emacs''二进制文件就是这样一个问件.如果没有设置这个选项的话,默认使用的选项值将被设为和''--prefix''选项值一样.
--bindir=DIR
指定二进制文件的安装位置.这里的二进制文件定义为可以被用户直接执行的程序.
--sbindir=DIR
指定超级二进制文件的安装位置.这是一些通常只能由超级用户执行的程序.
--libexecdir=DIR
指定可执行支持文件的安装位置.与二进制文件相反,这些文件从来不直接由用户执行,但是可以被上面提到的二进制文件所执行.
--datadir=DIR
指定通用数据文件的安装位置.
--sysconfdir=DIR
指定在单个机器上使用的只读数据的安装位置.
--sharedstatedir=DIR
指定可以在多个机器上共享的可写数据的安装位置.
--localstatedir=DIR
指定只能单机使用的可写数据的安装位置.
--libdir=DIR
指定库文件的安装位置.
--includedir=DIR
指定C头文件的安装位置.其他语言如C++的头文件也可以使用此选项.
--oldincludedir=DIR
指定为除GCC外编译器安装的C头文件的安装位置.
--infodir=DIR
指定Info格式文档的安装位置.Info是被GNU工程所使用的文档格式.
--mandir=DIR
指定手册页的安装位置.
--srcdir=DIR
这个选项对安装没有作用.他会告诉''configure''源码的位置.一般来说不用指定此选项,因为''configure''脚本一般和源码文件在同一个目录下.
--program-prefix=PREFIX
指定将被加到所安装程序的名字上的前缀.例如,使用''--program-prefix=g''来 configure一个名为''tar''的程序将会使安装的程序被命名为''gtar''.当和其他的安装选项一起使用时,这个选项只有当他被 `Makefile.in''文件使用时才会工作.
--program-suffix=SUFFIX
指定将被加到所安装程序的名字上的后缀.
--program-transform-name=PROGRAM
这里的PROGRAM是一个sed脚本.当一个程序被安装时,他的名字将经过`sed -e PROGRAM''来产生安装的名字.
--build=BUILD
指定软件包安装的系统平台.如果没有指定,默认值将是''--host''选项的值.
--host=HOST
指定软件运行的系统平台.如果没有指定,将会运行`config.guess''来检测.
--target=GARGET
指定软件面向(target to)的系统平台.这主要在程序语言工具如编译器和汇编器上下文中起作用.如果没有指定,默认将使用''--host''选项的值.
--disable-FEATURE
一些软件包可以选择这个选项来提供为大型选项的编译时配置,例如使用Kerberos认证系统或者一个实验性的编译器最优配置.如果默认是提供这些特性,可以使用''--disable-FEATURE''来禁用它,这里''FEATURE''是特性的名字.例如:
$ ./configure --disable-gui
-enable-FEATURE[=ARG]
相反的,一些软件包可能提供了一些默认被禁止的特性,可以使用''--enable-FEATURE''来起用它.这里''FEATURE''是特性的名字.一个特性可能会接受一个可选的参数.例如:
$ ./configure --enable-buffers=128
`--enable-FEATURE=no''与上面提到的''--disable-FEATURE''是同义的.
--with-PACKAGE[=ARG]
在自由软件社区里,有使用已有软件包和库的优秀传统.当用''configure''来配置一个源码树时,可以提供 其他已经安装的软件包的信息.例如,倚赖于Tcl和Tk的BLT器件工具包.要配置BLT,可能需要给''configure''提供一些关于我们把Tcl和 Tk装的何处的信息:
$ ./configure --with-tcl=/usr/local --with-tk=/usr/local
''--with-PACKAGE=no''与下面将提到的''--without-PACKAGE''是同义的.
--without-PACKAGE
有时候你可能不想让你的软件包与系统已有的软件包交互.例如,你可能不想让你的新编译器使用GNU ld.通过使用这个选项可以做到这一点:
$ ./configure --without-gnu-ld
--x-includes=DIR
这个选项是''--with-PACKAGE''选项的一个特例.在Autoconf最初被开发出来时,流行使用 ''configure''来作为Imake的一个变通方法来制作运行于X的软件.''--x-includes''选项提供了向''configure''脚本指明 包含X11头文件的目录的方法.
--x-libraries=DIR
类似的,''--x-libraries''选项提供了向''configure''脚本指明包含X11库的目录的方法.
在源码树中运行''configure''是不必要的同时也是不好的.一个由''configure''产生的良好的 ''Makefile''可以构筑源码属于另一棵树的软件包.在一个独立于源码的树中构筑派生的文件的好处是很明显的:派生的文件,如目标文件,会凌乱的散布 于源码树.这也使在另一个不同的系统或用不同的配置选项构筑同样的目标文件非常困难.建议使用三棵树:一棵源码树(source tree),一棵构筑树(build tree),一棵安装树(install tree).这里有一个很接近的例子,是使用这种方法来构筑GNU malloc包:
$ gtar zxf mmalloc-1.0.tar.gz
$ mkdir build && cd build
$ ../mmalloc-1.0/configure
creating cache ./config.cache
checking for gcc... gcc
checking whether the C compiler (gcc ) works... yes
checking whether the C compiler (gcc ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking for a BSD compatible install... /usr/bin/install -c
checking host system type... i586-pc-linux-gnu
checking build system type... i586-pc-linux-gnu
checking for ar... ar
checking for ranlib... ranlib
checking how to run the C preprocessor... gcc -E
checking for unistd.h... yes
checking for getpagesize... yes
checking for working mmap... yes
checking for limits.h... yes
checking for stddef.h... yes
updating cache ../config.cache
creating ./config.status
这样这棵构筑树就被配置了,下面可以继续构筑和安装这个包到默认的位置''/usr/local'':
$ make all && make install
 
补充:configure &&make&&make install 解释
configure 配置Makefile中的参数,比如编译器,库路径…………
make 它从Makefile中读取指令,编译源码
make install 编译后的处理,比如把文件移动到指定目录
 

第一步:./configure

  • 首先检查机器的一些配置和环境,系统的相关依赖。如果缺少相关依赖,脚本会停止执行,软件安装失败
  • 根据之前检查环境和依赖的结果,生产Makefile文件(main job)
 

第二步:make

  • make是Unix系统下的一个包。执行make命令需Makefile文件。make会根据Makefile文件中指令来安装软件
  • Makefile文件中有许多标签,来表示不同的section。一般的,make会编译源代码并生成可执行文件,其实Makefile主要就是描述文件编译的相互依赖关系

第三步:make install

  • 当执行make命令不加任何参数,程序就会按照Makefile的指令在相应的section间跳转并且执行相应的命令
  • 加上install参数即执行make install时,程序只会执行install section处的命令。install section的指令会将make阶段生产的可执行文件拷贝到相应的地方,例如/usr/local/bin
  • make clean 会删除上次make生产的obj文件以及可执行文件

关于Make Games with Python & Pygame (1)的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于'make clean' 仍然无法重新制作后,'make: Nothing to do for' 提出,MacOS、./configure & make & make install 知其所以然、./configure && make && make install、./configure && make && make install详解的相关信息,请在本站寻找。

本文标签: