• Linux下编译安装源码包软件 configure ,make, make install, make test/check, make clean 假目标


    http://www.360doc7.net/wxarticlenew/541275971.html

    一、程序的组成部分

    Linux下程序大都是由以下几部分组成:

    二进制文件:也就是可以运行的程序文件

    库文件:就是通常我们见到的lib目录下的文件

    配置文件:这个不必多说,都知道

    帮助文档:通常是我们在linux下用man命令查看的命令的文档

    二、linux下程序的存放目录

    linux程序的存放目录大致有三个地方:

    /etc, /bin, /sbin, /lib  :系统启动就需要用到的程序,这些目录不能挂载额外的分区,必须在根文件系统的分区上

    /usr/bin,/usr/sbin,/usr/lib:操作系统核心功能,可以单独分区

    /usr/local/bin,/usr/local/sbin,/usr/local/lib,/usr/local/etc,/usr/local/man:这个用于安装第三方程序,分别对应了二进制文件、库文件、配置文件、帮助文档的目录

    通常来说我们安装程序就安装在 /usr/local目录下

     

    三、编译安装源程序

    1、使用如下命令查看当前是否安装了gcc编译器,没有可以先用yum安装gcc

    gcc --version #查看是否安装gcc

    2、解压源码包,例如:

    tar -xvf nginx-1.7.7.tar.gz #解压源码包

    3、进入解压好的源码包:

    cd nginx-1.7.7 #进入源码包

    4、执行configure文件,此文件有两个功能:1、让用户选定编译特性;2、检查编译环境。configure执行后将生成MakeFile文件。例如:

    ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf

    其中我们通过--prefix制定了安装路径,通过--conf-path制定了配置文件的具体位置。注意:不是所有的程序的configure参数都是一样的 可以使用 ./configure --help查看详细参数说明。如果该程序所依赖的库在当前系统中没有安装,则会导致configure最后报错,遇到这种情况就需要你先安装依赖库。

    5、执行make命令,编译程序

    make

    6、编译成功后就可以安装了,执行如下命令

    make install

    到此程序就算安装完成了,但是不要忘了还有后续的配置哦

     

    四、配置程序

    1、修改PATH环境变量,以能够识别此程序的二进制文件路径;

    修改/etc/profile文件,在文件中 添加

    export PATH=$PATH:/path/to/somewhere  #记得是可执行文件所在的目录,路径中不要包含可执行文件。

    然后执行 :

    source /etc/profile #是我们的修改生效

    2、默认情况下,系统搜索库文件的路径/lib, /usr/lib; 要增添额外搜寻路径(注意:有的程序不提供库文件,那就不需要此设置了)

    在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中;然后执行如下命令使其生效

    ldconfig

    3、如果程序提供了库文件,也会相应的提供头文件,一般在安装目录的include目录下,系统默认扫描头文件的路径是:/usr/include。我们可以在/usr/include下用链接连接到我们安装程序的头文件。

    ln -s /usr/local/nginx/include /usr/include/yourname

    4、可能程序还提供了帮助文档,一般是安装目录下的man目录,为了我们可以使用man命令查看我们程序的帮助文档,我们需要:在/etc/man.config中添加一条MANPATH,指向我们的文档目录

    The magic behind configure, make, make install https://robots.thoughtbot.com/the-magic-behind-configure-make-make-install

    The magic behind configure, make, make install

     January 19, 2015 UPDATED ON June 12, 2015

    If you’ve used any flavour of Unix for development, you’ve probably installed software from source with this magic incantation:

    ./configure
    make
    make install
    

    I know I’ve typed it a lot, but in my early days using Linux I didn’t really understand what it meant, I just knew that if I wanted to install software this was the spell to recite.

    Recently I’ve been building my own Unix tools, and I wanted to tap into this standard install process; not only is it familiar to many Unix users, it’s also a great starting point for building a package for Homebrew and the various Linux and BSD package managers. It was time to dig into the Unix Grimoire and find out what the incantation does.

    What does all of this do

    There are three distinct steps in this process:

    1. Configure the software

    The configure script is responsible for getting ready to build the software on your specific system. It makes sure all of the dependencies for the rest of the build and install process are available, and finds out whatever it needs to know to use those dependencies.

    Unix programs are often written in C, so we’ll usually need a C compiler to build them. In these cases the configure script will establish that your system does indeed have a C compiler, and find out what it’s called and where to find it.

    2. Build the software

    Once configure has done its job, we can invoke make to build the software. This runs a series of tasks defined in a Makefile to build the finished program from its source code.

    The tarball you download usually doesn’t include a finished Makefile. Instead it comes with a template called Makefile.in and the configure script produces a customised Makefile specific to your system.

    3. Install the software

    Now that the software is built and ready to run, the files can be copied to their final destinations. The make install command will copy the built program, and its libraries and documentation, to the correct locations.

    This usually means that the program’s binary will be copied to a directory on your PATH, the program’s manual page will be copied to a directory on your MANPATH, and any other files it depends on will be safely stored in the appropriate place.

    Since the install step is also defined in the Makefile, where the software is installed can change based on options passed to the configure script, or things the configure script discovered about your system.

    Depending on where the software is being installed, you might need escalated permissions for this step so you can copy files to system directories. Using sudo will often do the trick.

    Where do these scripts come from

    All of this works because a configure script examines your system, and uses the information it finds to convert a Makefile.in template into a Makefile, but where do the configure script and the Makefile.in template come from?

    If you’ve ever opened up a configure script, or associated Makefile.in, you will have seen that they are thousands of lines of dense shell script. Sometimes these supporting scripts are longer than the source code of the program they install.

    Even starting from an existing configure script, it would be very daunting to manually construct one. Don’t worry, though: these scripts aren’t built by hand.

    Programs that are built in this way have usually been packaged using a suite of programs collectively referred to as autotools. This suite includes autoconfautomake, and many other programs, all of which work together to make the life of a software maintainer significantly easier. The end user doesn’t see these tools, but they take the pain out of setting up an install process that will run consistently on many different flavours of Unix.

    Hello world

    Let’s take a simple “Hello world” C program, and see what it would take to package it with autotools.

    Here’s the source of the program, in a file called main.c:

    #include <stdio.h>
    
    int
    main(int argc, char* argv[])
    {
        printf("Hello world
    ");
        return 0;
    }
    

    Creating the configure script

    Instead of writing the configure script by hand, we need to create a configure.ac file written in m4sh—a combination of m4 macros and POSIX shell script—to describe what the configure script needs to do.

    The first m4 macro we need to call is AC_INIT, which will initialise autoconf and set up some basic information about the program we’re packaging. The program is called helloworld, the version is 0.1, and the maintainer is george@thoughtbot.com:

    AC_INIT([helloworld], [0.1], [george@thoughtbot.com])
    

    We’re going to use automake for this project, so we need to initialise that with the AM_INIT_AUTOMAKE macro:

    AM_INIT_AUTOMAKE
    

    Next, we need to tell autoconf about the dependencies our configure script needs to look for. In this case, the configure script only needs to look for a C compiler. We can set this up using the AC_PROG_CC macro:

    AC_PROG_CC
    

    If there were other dependencies, then we’d use other m4 macros here to discover them; for example the AC_PATH_PROG macro looks for a given program on the user’s PATH.

    Now that we’ve listed our dependencies, we can use them. We saw earlier that a typical configure script will use the information it has about the user’s system to build a Makefile from a Makefile.in template.

    The next line used the AC_CONFIG_FILES macro to tell autoconf that the configure script should do just that: it should find a file called Makefile.in, substitute placeholders like @PACKAGE_VERSION@ with values like 0.1, and write the results to Makefile.

    AC_CONFIG_FILES([Makefile])
    

    Finally, having told autoconf everything our configure script needs to do, we can call the AC_OUTPUT macro to output the script:

    AC_OUTPUT
    

    Here’s the whole thing. Not bad, compared to the 4,737 line configure script it’s going to produce!

    AC_INIT([helloworld], [0.1], [george@thoughtbot.com])
    AM_INIT_AUTOMAKE
    AC_PROG_CC
    AC_CONFIG_FILES([Makefile])
    AC_OUTPUT
    

    We’re almost ready to package up and distribute our program, but we’re still missing something. Our configure script will expect a Makefile.in file that it can substitute all of those system-specific variables into, but so far, we’ve not created that file.

    Creating the Makefile

    As with the configure script, the Makefile.in template is very long and complex. So instead of writing it by hand, we write a shorter Makefile.am file, which automake will use to generated the Makefile.in for us.

    First, we need to set some options to tell automake about the layout of the project. Since we’re not following the standard layout of a GNU project, we warn automake that this is a foreignproject:

    AUTOMAKE_OPTIONS = foreign
    

    Next, we tell automake that we want the Makefile to build a program called helloworld:

    bin_PROGRAMS = helloworld
    

    There’s a lot of information packed into this line, thanks to automake’s uniform naming scheme.

    The PROGRAMS suffix is called a primary. It tells automake what properties the helloworldfile has. For example, PROGRAMS need to be built, whereas SCRIPTS and DATA files don’t need to be built.

    The bin prefix tells automake that the file listed here should be installed to the directory defined by the variable bindir. There are various directories defined for us by autotools—including bindirlibdir, and pkglibdir—but we can also define our own.

    If we wanted to install some Ruby scripts as part of our program, we could define a rubydirvariable and tell automake to install our Ruby files there:

    rubydir = $(datadir)/ruby
    ruby_DATA = my_script.rb my_other_script.rb
    

    Additional prefixes can be added before the install directory to further nuance automake’s behaviour.

    Since we’ve defined a PROGRAM, we need to tell automake where to find its source files. In this case, the prefix is the name of the program these source files build, rather than the place where they will be installed:

    helloworld_SOURCES = main.c
    

    Here’s the whole Makefile.am file for our helloworld program. As with theconfigure.ac and the configure script, it’s a lot shorter than the Makefile.in that it generates:

    AUTOMAKE_OPTIONS = foreign
    bin_PROGRAMS = helloworld
    helloworld_SOURCES = main.c
    

    Putting it all together

    Now we’ve written our config files, we can run autotools and generate the finished configure script and Makefile.in template.

    First, we need to generate an m4 environment for autotools to use:

    aclocal
    

    Now we can run autoconf to turn our configure.ac into a configure script, and automake to turn our Makefile.am into a Makefile.in:

    autoconf
    automake --add-missing
    

    Distributing the program

    The end user doesn’t need to see our autotools setup, so we can distribute the configurescript and Makefile.in without all of the files we used to generate them.

    Fortunately, autotools will help us with distribution too. The Makefile contains all kinds of interesting targets, including one to build a tarball of the project containing all of the files we need to distribute:

    ./configure
    make dist
    

    You can even test that the distribution tarball can be installed under a variety of conditions:

    make distcheck
    

    Overview

    Now we know where this incantation comes from and how it works!

    On the maintainer’s system:

    aclocal # Set up an m4 environment
    autoconf # Generate configure from configure.ac
    automake --add-missing # Generate Makefile.in from Makefile.am
    ./configure # Generate Makefile from Makefile.in
    make distcheck # Use Makefile to build and test a tarball to distribute
    

    On the end-user’s system:

    ./configure # Generate Makefile from Makefile.in
    make # Use Makefile to build the program
    make install # Use Makefile to install the program 


    config、make、make install - 蘑菇の甜酱 - 博客园 https://www.cnblogs.com/mogujiang/p/5545462.html

    .config/    .configure  (查看该目录下是否有这个文件,如果有makefile,可直接make)  配置

    config是一个shell脚本,根据平台的特性生成Makefile文件,为下一步的编译做准备,

    可以通过在 configure 后加上参数来对安装进行控制,比如:

    ./configure --prefix=/usr    (将该软件安装在 /usr 下面)

    可以通过 ./configure --help 查看详细的说明帮助

    如果有需要,会进行 make depend

    (一种makefile的规则,通过扫描一个目录下的所有CC++ 代码,从而判断出文件之间的依赖关系,如a.cc文件中调用了b.h(如以形势include<b.h>),如果之后a.cc文件被改动,那么只需要重新编译a.cc文件,不需要编译b.h文件。否则所有的文件都需要重新编译)

    make  编译

    从Makefile中读取指令,根据makefile制定的规则,将cc++文件编译成*.o文件,然后进一步生成可执行文件。大多数的源代码包都经过这一步进行编译,(当然有些perl或python编写的软件需要调用perl或python来进行编译)。

    如果 在make过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码

    make test / make check

    顾名思义,这一步就是对上一步 make 的检查了,要确保 make 是没有错误的,也就是这一步的 test、check要全部是 OK 的,error 为0

    sudo make install  安装

    这一步是用来安装的,它也从Makefile中读取指令,安装到指定的位置

    这条命令来进行安装,一般需要你有 root 权限(因为要向系统写入文件),所以前面用了 sudo


    流程:

    在Linux下安装一个应用程序时,一般先运行脚本configure,然后用make来编译源程序,在运行make install,最后运行make clean(删除源代码(CC++ code)生成的执行文件和所有的中间目标文件)删除一些临时文件。
    这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。


    绝大数开源软件都是公布源代码的,源代码一般被打包为tar.gz归档压缩文件,然后手工编译为二进制可执行文件

    ./configure  检查编译环境/相关库文件/配置参数,生成makefile

    make      对源代码进行编译,生成可执行文件

    make install    将生成的可执行文件安装到当前计算机中

    特点;

    兼容性好/可控制性好/开源软件会大量使用其他开源软件的功能,要解决大量的依赖关系

    [root@d1 ~]# make --help
    用法:make [选项] [目标] ...
    选项:
    -b, -m 忽略兼容性。
    -B, --always-make 无条件 make 所有目标。
    -C DIRECTORY, --directory=DIRECTORY
    在执行钱先切换到 DIRECTORY 目录。
    -d 打印大量调试信息。
    --debug[=FLAGS] 打印各种调试信息。
    -e, --environment-overrides
    环境变量覆盖 makefile 中的变量。
    --eval=STRING Evaluate STRING as a makefile statement.
    -f FILE, --file=FILE, --makefile=FILE
    从 FILE 中读入 makefile。
    -h, --help 打印该消息并退出。
    -i, --ignore-errors Ignore errors from recipes.
    -I DIRECTORY, --include-dir=DIRECTORY
    在 DIRECTORY 中搜索被包含的 makefile。
    -j [N], --jobs[=N] 同时允许 N 个任务;无参数表明允许无限个任务。
    -k, --keep-going 当某些目标无法创建时仍然继续。
    -l [N], --load-average[=N], --max-load[=N]
    在系统负载高于 N 时不启动多任务。
    -L, --check-symlink-times 使用软链接及软链接目标中修改时间较晚的一个。
    -n, --just-print, --dry-run, --recon
    Don't actually run any recipe; just print them.
    -o FILE, --old-file=FILE, --assume-old=FILE
    将 FILE 当做很旧,不必重新生成。
    -p, --print-data-base 打印 make 的内部数据库。
    -q, --question Run no recipe; exit status says if up to date.
    -r, --no-builtin-rules 禁用内置隐含规则。
    -R, --no-builtin-variables 禁用内置变量设置。
    -s, --silent, --quiet Don't echo recipes.
    -S, --no-keep-going, --stop
    关闭 -k。
    -t, --touch touch 目标而不是重新创建它们。
    -v, --version 打印 make 的版本号并退出。
    -w, --print-directory 打印当前目录。
    --no-print-directory 关闭 -w,即使 -w 默认开启。
    -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE
    将 FILE 当做最新。
    --warn-undefined-variables 当引用未定义变量的时候发出警告。
    --warn-undefined-functions Warn when an undefined user function is called.

    该程序为 x86_64-redhat-linux-gnu 编译
    报告错误到 <bug-make@gnu.org>
    [root@d1 ~]#

    [root@bogon src]# cd pcre-8.42/
    [root@bogon pcre-8.42]# ll a-s
    ls: 无法访问a-s: 没有那个文件或目录
    [root@bogon pcre-8.42]# ll -as
    总用量 4620
     12 drwxr-xr-x. 7 1169 1169   8192 3月  20 2018 .
      0 drwxr-xr-x. 3 root root     74 11月  7 11:54 ..
      8 -rwxr-xr-x. 1 1169 1169   7004 10月 28 2015 132html
     56 -rw-r--r--. 1 1169 1169  54600 3月  20 2018 aclocal.m4
      8 -rwxr-xr-x. 1 1169 1169   5826 3月  20 2018 ar-lib
      4 -rw-r--r--. 1 1169 1169    851 2月  21 2018 AUTHORS
    292 -rw-r--r--. 1 1169 1169 296019 3月  20 2018 ChangeLog
      4 -rwxr-xr-x. 1 1169 1169   1493 1月  31 2014 CheckMan
      4 -rwxr-xr-x. 1 1169 1169   2941 1月  31 2014 CleanTxt
      0 drwxr-xr-x. 2 1169 1169    130 3月  20 2018 cmake
     36 -rw-r--r--. 1 1169 1169  34139 1月  24 2017 CMakeLists.txt
      8 -rwxr-xr-x. 1 1169 1169   7382 3月  20 2018 compile
      4 -rw-r--r--. 1 1169 1169   1560 1月  31 2014 config-cmake.h.in
     44 -rwxr-xr-x. 1 1169 1169  44259 3月  20 2018 config.guess
     16 -rw-r--r--. 1 1169 1169  14009 3月  20 2018 config.h.generic
     16 -rw-r--r--. 1 1169 1169  13470 3月  20 2018 config.h.in
     36 -rwxr-xr-x. 1 1169 1169  36515 3月  20 2018 config.sub
    688 -rwxr-xr-x. 1 1169 1169 703257 3月  20 2018 configure
     44 -rw-r--r--. 1 1169 1169  41991 3月  20 2018 configure.ac
      4 -rw-r--r--. 1 1169 1169     95 1月  31 2014 COPYING
     24 -rwxr-xr-x. 1 1169 1169  23567 3月  20 2018 depcomp
      4 -rwxr-xr-x. 1 1169 1169    643 1月  31 2014 Detrail
      8 -rw-r--r--. 1 1169 1169   6972 1月  31 2014 dftables.c
      4 drwxr-xr-x. 3 1169 1169   4096 3月  20 2018 doc
     24 -rw-r--r--. 1 1169 1169  23860 1月  31 2014 HACKING
     16 -rw-r--r--. 1 1169 1169  15756 3月  20 2018 INSTALL
     16 -rwxr-xr-x. 1 1169 1169  14676 3月  20 2018 install-sh
      4 -rw-r--r--. 1 1169 1169    377 4月  24 2015 libpcre16.pc.in
      4 -rw-r--r--. 1 1169 1169    377 4月  24 2015 libpcre32.pc.in
      4 -rw-r--r--. 1 1169 1169    288 1月  31 2014 libpcrecpp.pc.in
      4 -rw-r--r--. 1 1169 1169    372 4月  24 2015 libpcre.pc.in
      4 -rw-r--r--. 1 1169 1169    330 1月  31 2014 libpcreposix.pc.in
      4 -rw-r--r--. 1 1169 1169   3182 2月  21 2018 LICENCE
    324 -rw-r--r--. 1 1169 1169 331232 3月  20 2018 ltmain.sh
      0 drwxr-xr-x. 2 1169 1169    151 3月  20 2018 m4
     28 -rw-r--r--. 1 1169 1169  27296 3月   3 2016 Makefile.am
    208 -rw-r--r--. 1 1169 1169 212262 3月  20 2018 Makefile.in
      4 -rw-r--r--. 1 1169 1169   2229 1月  31 2014 makevp.bat
      4 -rw-r--r--. 1 1169 1169    345 1月  31 2014 makevp_c.txt
      4 -rw-r--r--. 1 1169 1169    598 1月  31 2014 makevp_l.txt
      8 -rwxr-xr-x. 1 1169 1169   6873 3月  20 2018 missing
     32 -rw-r--r--. 1 1169 1169  29139 3月  20 2018 NEWS
     32 -rw-r--r--. 1 1169 1169  31359 2月  21 2018 NON-AUTOTOOLS-BUILD
      4 -rw-r--r--. 1 1169 1169    229 1月  31 2014 NON-UNIX-USE
      4 -rw-r--r--. 1 1169 1169   2183 1月  31 2014 pcre16_byte_order.c
      4 -rw-r--r--. 1 1169 1169   2183 1月  31 2014 pcre16_chartables.c
      4 -rw-r--r--. 1 1169 1169   2177 1月  31 2014 pcre16_compile.c
      4 -rw-r--r--. 1 1169 1169   2175 1月  31 2014 pcre16_config.c
      4 -rw-r--r--. 1 1169 1169   2179 1月  31 2014 pcre16_dfa_exec.c
      4 -rw-r--r--. 1 1169 1169   2171 1月  31 2014 pcre16_exec.c
      4 -rw-r--r--. 1 1169 1169   2179 1月  31 2014 pcre16_fullinfo.c
      4 -rw-r--r--. 1 1169 1169   2169 1月  31 2014 pcre16_get.c
      4 -rw-r--r--. 1 1169 1169   2177 1月  31 2014 pcre16_globals.c
      4 -rw-r--r--. 1 1169 1169   2185 1月  31 2014 pcre16_jit_compile.c
      4 -rw-r--r--. 1 1169 1169   2183 1月  31 2014 pcre16_maketables.c
      4 -rw-r--r--. 1 1169 1169   2177 1月  31 2014 pcre16_newline.c
      4 -rw-r--r--. 1 1169 1169   3265 1月  31 2014 pcre16_ord2utf16.c
      4 -rw-r--r--. 1 1169 1169   2179 1月  31 2014 pcre16_printint.c
      4 -rw-r--r--. 1 1169 1169   2179 1月  31 2014 pcre16_refcount.c
      4 -rw-r--r--. 1 1169 1169   2187 1月  31 2014 pcre16_string_utils.c
      4 -rw-r--r--. 1 1169 1169   2173 1月  31 2014 pcre16_study.c
      4 -rw-r--r--. 1 1169 1169   2175 1月  31 2014 pcre16_tables.c
      4 -rw-r--r--. 1 1169 1169   2169 1月  31 2014 pcre16_ucd.c
      8 -rw-r--r--. 1 1169 1169   4899 1月  31 2014 pcre16_utf16_utils.c
      8 -rw-r--r--. 1 1169 1169   4519 1月  31 2014 pcre16_valid_utf16.c
      4 -rw-r--r--. 1 1169 1169   2177 1月  31 2014 pcre16_version.c
      4 -rw-r--r--. 1 1169 1169   2175 1月  31 2014 pcre16_xclass.c
      4 -rw-r--r--. 1 1169 1169   2183 1月  31 2014 pcre32_byte_order.c
      4 -rw-r--r--. 1 1169 1169   2183 1月  31 2014 pcre32_chartables.c
      4 -rw-r--r--. 1 1169 1169   2177 1月  31 2014 pcre32_compile.c
      4 -rw-r--r--. 1 1169 1169   2175 1月  31 2014 pcre32_config.c
      4 -rw-r--r--. 1 1169 1169   2179 1月  31 2014 pcre32_dfa_exec.c
      4 -rw-r--r--. 1 1169 1169   2171 1月  31 2014 pcre32_exec.c
      4 -rw-r--r--. 1 1169 1169   2179 1月  31 2014 pcre32_fullinfo.c
      4 -rw-r--r--. 1 1169 1169   2169 1月  31 2014 pcre32_get.c
      4 -rw-r--r--. 1 1169 1169   2177 1月  31 2014 pcre32_globals.c
      4 -rw-r--r--. 1 1169 1169   2185 1月  31 2014 pcre32_jit_compile.c
      4 -rw-r--r--. 1 1169 1169   2183 1月  31 2014 pcre32_maketables.c
      4 -rw-r--r--. 1 1169 1169   2177 1月  31 2014 pcre32_newline.c
      4 -rw-r--r--. 1 1169 1169   3122 1月  31 2014 pcre32_ord2utf32.c
      4 -rw-r--r--. 1 1169 1169   2179 1月  31 2014 pcre32_printint.c
      4 -rw-r--r--. 1 1169 1169   2179 1月  31 2014 pcre32_refcount.c
      4 -rw-r--r--. 1 1169 1169   2187 1月  31 2014 pcre32_string_utils.c
      4 -rw-r--r--. 1 1169 1169   2173 1月  31 2014 pcre32_study.c
      4 -rw-r--r--. 1 1169 1169   2175 1月  31 2014 pcre32_tables.c
      4 -rw-r--r--. 1 1169 1169   2169 1月  31 2014 pcre32_ucd.c
      8 -rw-r--r--. 1 1169 1169   5084 1月  31 2014 pcre32_utf32_utils.c
      8 -rw-r--r--. 1 1169 1169   4168 1月  31 2014 pcre32_valid_utf32.c
      4 -rw-r--r--. 1 1169 1169   2177 1月  31 2014 pcre32_version.c
      4 -rw-r--r--. 1 1169 1169   2175 1月  31 2014 pcre32_xclass.c
     12 -rw-r--r--. 1 1169 1169   9231 4月   4 2014 pcre_byte_order.c
      8 -rw-r--r--. 1 1169 1169   7848 1月  31 2014 pcre_chartables.c.dist
    316 -rw-r--r--. 1 1169 1169 322188 12月 12 2017 pcre_compile.c
      8 -rw-r--r--. 1 1169 1169   4983 1月  31 2014 pcre_config.c
      4 -rw-r--r--. 1 1169 1169   2470 1月  31 2014 pcre-config.in
      8 -rw-r--r--. 1 1169 1169   6865 1月  31 2014 pcrecpparg.h.in
     36 -rw-r--r--. 1 1169 1169  32958 6月  14 2016 pcrecpp.cc
     28 -rw-r--r--. 1 1169 1169  26529 1月  31 2014 pcrecpp.h
      4 -rw-r--r--. 1 1169 1169   2871 1月  31 2014 pcrecpp_internal.h
     40 -rw-r--r--. 1 1169 1169  39224 4月  22 2017 pcrecpp_unittest.cc
     16 -rw-r--r--. 1 1169 1169  15520 1月  31 2014 pcredemo.c
    124 -rw-r--r--. 1 1169 1169 126768 11月 17 2017 pcre_dfa_exec.c
    216 -rw-r--r--. 1 1169 1169 218251 2月  20 2018 pcre_exec.c
      8 -rw-r--r--. 1 1169 1169   7819 1月  31 2014 pcre_fullinfo.c
     24 -rw-r--r--. 1 1169 1169  22906 3月  27 2017 pcre_get.c
     28 -rw-r--r--. 1 1169 1169  26071 1月  31 2014 pcregexp.pas
      4 -rw-r--r--. 1 1169 1169   3836 2月   9 2014 pcre_globals.c
     96 -rw-r--r--. 1 1169 1169  98202 2月  25 2018 pcregrep.c
     32 -rw-r--r--. 1 1169 1169  31718 3月  20 2018 pcre.h.generic
     32 -rw-r--r--. 1 1169 1169  31757 8月  19 2017 pcre.h.in
    112 -rw-r--r--. 1 1169 1169 114167 6月  14 2017 pcre_internal.h
    356 -rw-r--r--. 1 1169 1169 364384 1月  11 2018 pcre_jit_compile.c
     72 -rw-r--r--. 1 1169 1169  73721 7月   2 2016 pcre_jit_test.c
      8 -rw-r--r--. 1 1169 1169   5863 1月  31 2014 pcre_maketables.c
      8 -rw-r--r--. 1 1169 1169   6164 1月  31 2014 pcre_newline.c
      4 -rw-r--r--. 1 1169 1169   3260 1月  31 2014 pcre_ord2utf8.c
     20 -rw-r--r--. 1 1169 1169  16499 2月  20 2018 pcreposix.c
      8 -rw-r--r--. 1 1169 1169   5452 1月  31 2014 pcreposix.h
     24 -rw-r--r--. 1 1169 1169  23408 1月  31 2014 pcre_printint.c
      4 -rw-r--r--. 1 1169 1169   3778 1月  31 2014 pcre_refcount.c
      8 -rw-r--r--. 1 1169 1169   5546 1月  31 2014 pcre_scanner.cc
      8 -rw-r--r--. 1 1169 1169   6600 1月  31 2014 pcre_scanner.h
      8 -rw-r--r--. 1 1169 1169   5313 4月  22 2017 pcre_scanner_unittest.cc
      4 -rw-r--r--. 1 1169 1169   1858 1月  31 2014 pcre_stringpiece.cc
      8 -rw-r--r--. 1 1169 1169   6361 4月  22 2017 pcre_stringpiece.h.in
      4 -rw-r--r--. 1 1169 1169   3624 4月  22 2017 pcre_stringpiece_unittest.cc
      8 -rw-r--r--. 1 1169 1169   5386 1月  31 2014 pcre_string_utils.c
     48 -rw-r--r--. 1 1169 1169  48586 2月  28 2016 pcre_study.c
     32 -rw-r--r--. 1 1169 1169  28774 4月  30 2017 pcre_tables.c
    172 -rw-r--r--. 1 1169 1169 173880 6月  14 2017 pcretest.c
    204 -rw-r--r--. 1 1169 1169 208566 2月  25 2017 pcre_ucd.c
     12 -rw-r--r--. 1 1169 1169  10207 1月  31 2014 pcre_valid_utf8.c
      8 -rw-r--r--. 1 1169 1169   4202 1月  31 2014 pcre_version.c
     12 -rw-r--r--. 1 1169 1169   8231 11月 18 2015 pcre_xclass.c
      8 -rwxr-xr-x. 1 1169 1169   6273 9月  15 2014 perltest.pl
      8 -rwxr-xr-x. 1 1169 1169   7311 1月  31 2014 PrepareRelease
     48 -rw-r--r--. 1 1169 1169  45548 2月  11 2015 README
     32 -rwxr-xr-x. 1 1169 1169  28887 5月  31 2016 RunGrepTest
     32 -rwxr-xr-x. 1 1169 1169  29654 3月   1 2016 RunTest
     20 -rw-r--r--. 1 1169 1169  17518 1月  31 2014 RunTest.bat
      4 drwxr-xr-x. 2 1169 1169   4096 3月  20 2018 sljit
      4 drwxr-xr-x. 2 1169 1169   4096 3月  20 2018 testdata
      8 -rwxr-xr-x. 1 1169 1169   4641 3月  20 2018 test-driver
      8 -rw-r--r--. 1 1169 1169   5215 9月  15 2014 ucp.h
    [root@bogon pcre-8.42]# ./configure
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking whether make supports nested variables... (cached) yes
    checking for style of include used by make... GNU
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables...
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking whether gcc understands -c and -o together... yes
    checking dependency style of gcc... gcc3
    checking for ar... ar
    checking the archiver (ar) interface... ar
    checking for gcc... (cached) gcc
    checking whether we are using the GNU C compiler... (cached) yes
    checking whether gcc accepts -g... (cached) yes
    checking for gcc option to accept ISO C89... (cached) none needed
    checking whether gcc understands -c and -o together... (cached) yes
    checking dependency style of gcc... (cached) gcc3
    checking for g++... g++
    checking whether we are using the GNU C++ compiler... yes
    checking whether g++ accepts -g... yes
    checking dependency style of g++... gcc3
    checking how to run the C preprocessor... gcc -E
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking for int64_t... yes
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking how to print strings... printf
    checking for a sed that does not truncate output... /usr/bin/sed
    checking for fgrep... /usr/bin/grep -F
    checking for ld used by gcc... /usr/bin/ld
    checking if the linker (/usr/bin/ld) is GNU ld... yes
    checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
    checking the name lister (/usr/bin/nm -B) interface... BSD nm
    checking whether ln -s works... yes
    checking the maximum length of command line arguments... 1572864
    checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
    checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
    checking for /usr/bin/ld option to reload object files... -r
    checking for objdump... objdump
    checking how to recognize dependent libraries... pass_all
    checking for dlltool... dlltool
    checking how to associate runtime and link libraries... printf %s
    
    checking for archiver @FILE support... @
    checking for strip... strip
    checking for ranlib... ranlib
    checking command to parse /usr/bin/nm -B output from gcc object... ok
    checking for sysroot... no
    checking for a working dd... /usr/bin/dd
    checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
    checking for mt... no
    checking if : is a manifest tool... no
    checking for dlfcn.h... yes
    checking for objdir... .libs
    checking if gcc supports -fno-rtti -fno-exceptions... no
    checking for gcc option to produce PIC... -fPIC -DPIC
    checking if gcc PIC flag -fPIC -DPIC works... yes
    checking if gcc static flag -static works... no
    checking if gcc supports -c -o file.o... yes
    checking if gcc supports -c -o file.o... (cached) yes
    checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking whether -lc should be explicitly linked in... no
    checking dynamic linker characteristics... GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... yes
    checking whether to build static libraries... yes
    checking how to run the C++ preprocessor... g++ -E
    checking for ld used by g++... /usr/bin/ld -m elf_x86_64
    checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
    checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking for g++ option to produce PIC... -fPIC -DPIC
    checking if g++ PIC flag -fPIC -DPIC works... yes
    checking if g++ static flag -static works... no
    checking if g++ supports -c -o file.o... yes
    checking if g++ supports -c -o file.o... (cached) yes
    checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking dynamic linker characteristics... (cached) GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether ln -s works... yes
    checking whether the -Werror option is usable... yes
    checking for simple visibility declarations... yes
    checking for ANSI C header files... (cached) yes
    checking limits.h usability... yes
    checking limits.h presence... yes
    checking for limits.h... yes
    checking for sys/types.h... (cached) yes
    checking for sys/stat.h... (cached) yes
    checking dirent.h usability... yes
    checking dirent.h presence... yes
    checking for dirent.h... yes
    checking windows.h usability... no
    checking windows.h presence... no
    checking for windows.h... no
    checking for alias support in the linker... no
    checking for alias support in the linker... no
    checking string usability... yes
    checking string presence... yes
    checking for string... yes
    checking bits/type_traits.h usability... no
    checking bits/type_traits.h presence... no
    checking for bits/type_traits.h... no
    checking type_traits.h usability... no
    checking type_traits.h presence... no
    checking for type_traits.h... no
    checking for strtoq... yes
    checking for long long... yes
    checking for unsigned long long... yes
    checking for an ANSI C-conforming const... yes
    checking for size_t... yes
    checking for bcopy... yes
    checking for memmove... yes
    checking for strerror... yes
    checking zlib.h usability... no
    checking zlib.h presence... no
    checking for zlib.h... no
    checking for gzopen in -lz... no
    checking bzlib.h usability... no
    checking bzlib.h presence... no
    checking for bzlib.h... no
    checking for libbz2... no
    checking that generated files are newer than configure... done
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating libpcre.pc
    config.status: creating libpcre16.pc
    config.status: creating libpcre32.pc
    config.status: creating libpcreposix.pc
    config.status: creating libpcrecpp.pc
    config.status: creating pcre-config
    config.status: creating pcre.h
    config.status: creating pcre_stringpiece.h
    config.status: creating pcrecpparg.h
    config.status: creating config.h
    config.status: executing depfiles commands
    config.status: executing libtool commands
    config.status: executing script-chmod commands
    config.status: executing delete-old-chartables commands
    
    pcre-8.42 configuration summary:
    
        Install prefix .................. : /usr/local
        C preprocessor .................. : gcc -E
        C compiler ...................... : gcc
        C++ preprocessor ................ : g++ -E
        C++ compiler .................... : g++
        Linker .......................... : /usr/bin/ld -m elf_x86_64
        C preprocessor flags ............ :
        C compiler flags ................ : -g -O2 -fvisibility=hidden
        C++ compiler flags .............. : -O2 -fvisibility=hidden -fvisibility-inlines-hidden
        Linker flags .................... :
        Extra libraries ................. :
    
        Build 8 bit pcre library ........ : yes
        Build 16 bit pcre library ....... : no
        Build 32 bit pcre library ....... : no
        Build C++ library ............... : yes
        Enable JIT compiling support .... : no
        Enable UTF-8/16/32 support ...... : no
        Unicode properties .............. : no
        Newline char/sequence ........... : lf
        R matches only ANYCRLF ......... : no
        EBCDIC coding ................... : no
        EBCDIC code for NL .............. : n/a
        Rebuild char tables ............. : no
        Use stack recursion ............. : yes
        POSIX mem threshold ............. : 10
        Internal link size .............. : 2
        Nested parentheses limit ........ : 250
        Match limit ..................... : 10000000
        Match limit recursion ........... : MATCH_LIMIT
        Build shared libs ............... : yes
        Build static libs ............... : yes
        Use JIT in pcregrep ............. : no
        Buffer size for pcregrep ........ : 20480
        Link pcregrep with libz ......... : no
        Link pcregrep with libbz2 ....... : no
        Link pcretest with libedit ...... : no
        Link pcretest with libreadline .. : no
        Valgrind support ................ : no
        Code coverage ................... : no
    
    [root@bogon pcre-8.42]# ll -ash
    总用量 5.5M
     12K drwxr-xr-x. 8 1169 1169 8.0K 11月  7 11:55 .
       0 drwxr-xr-x. 3 root root   74 11月  7 11:54 ..
    8.0K -rwxr-xr-x. 1 1169 1169 6.9K 10月 28 2015 132html
     56K -rw-r--r--. 1 1169 1169  54K 3月  20 2018 aclocal.m4
    8.0K -rwxr-xr-x. 1 1169 1169 5.7K 3月  20 2018 ar-lib
    4.0K -rw-r--r--. 1 1169 1169  851 2月  21 2018 AUTHORS
    292K -rw-r--r--. 1 1169 1169 290K 3月  20 2018 ChangeLog
    4.0K -rwxr-xr-x. 1 1169 1169 1.5K 1月  31 2014 CheckMan
    4.0K -rwxr-xr-x. 1 1169 1169 2.9K 1月  31 2014 CleanTxt
       0 drwxr-xr-x. 2 1169 1169  130 3月  20 2018 cmake
     36K -rw-r--r--. 1 1169 1169  34K 1月  24 2017 CMakeLists.txt
    8.0K -rwxr-xr-x. 1 1169 1169 7.3K 3月  20 2018 compile
    4.0K -rw-r--r--. 1 1169 1169 1.6K 1月  31 2014 config-cmake.h.in
     44K -rwxr-xr-x. 1 1169 1169  44K 3月  20 2018 config.guess
     16K -rw-r--r--. 1 root root  14K 11月  7 11:55 config.h
     16K -rw-r--r--. 1 1169 1169  14K 3月  20 2018 config.h.generic
     16K -rw-r--r--. 1 1169 1169  14K 3月  20 2018 config.h.in
    192K -rw-r--r--. 1 root root  73K 11月  7 11:55 config.log
     72K -rwxr-xr-x. 1 root root  70K 11月  7 11:55 config.status
     36K -rwxr-xr-x. 1 1169 1169  36K 3月  20 2018 config.sub
    688K -rwxr-xr-x. 1 1169 1169 687K 3月  20 2018 configure
     44K -rw-r--r--. 1 1169 1169  42K 3月  20 2018 configure.ac
    4.0K -rw-r--r--. 1 1169 1169   95 1月  31 2014 COPYING
     24K -rwxr-xr-x. 1 1169 1169  24K 3月  20 2018 depcomp
    8.0K drwxr-xr-x. 2 root root 4.0K 11月  7 11:55 .deps
    4.0K -rwxr-xr-x. 1 1169 1169  643 1月  31 2014 Detrail
    8.0K -rw-r--r--. 1 1169 1169 6.9K 1月  31 2014 dftables.c
    4.0K drwxr-xr-x. 3 1169 1169 4.0K 3月  20 2018 doc
     24K -rw-r--r--. 1 1169 1169  24K 1月  31 2014 HACKING
     16K -rw-r--r--. 1 1169 1169  16K 3月  20 2018 INSTALL
     16K -rwxr-xr-x. 1 1169 1169  15K 3月  20 2018 install-sh
    4.0K -rw-r--r--. 1 root root  328 11月  7 11:55 libpcre16.pc
    4.0K -rw-r--r--. 1 1169 1169  377 4月  24 2015 libpcre16.pc.in
    4.0K -rw-r--r--. 1 root root  328 11月  7 11:55 libpcre32.pc
    4.0K -rw-r--r--. 1 1169 1169  377 4月  24 2015 libpcre32.pc.in
    4.0K -rw-r--r--. 1 root root  269 11月  7 11:55 libpcrecpp.pc
    4.0K -rw-r--r--. 1 1169 1169  288 1月  31 2014 libpcrecpp.pc.in
    4.0K -rw-r--r--. 1 root root  323 11月  7 11:55 libpcre.pc
    4.0K -rw-r--r--. 1 1169 1169  372 4月  24 2015 libpcre.pc.in
    4.0K -rw-r--r--. 1 root root  311 11月  7 11:55 libpcreposix.pc
    4.0K -rw-r--r--. 1 1169 1169  330 1月  31 2014 libpcreposix.pc.in
    448K -rwxr-xr-x. 1 root root 344K 11月  7 11:55 libtool
    4.0K -rw-r--r--. 1 1169 1169 3.2K 2月  21 2018 LICENCE
    324K -rw-r--r--. 1 1169 1169 324K 3月  20 2018 ltmain.sh
       0 drwxr-xr-x. 2 1169 1169  151 3月  20 2018 m4
    184K -rw-r--r--. 1 root root 183K 11月  7 11:55 Makefile
     28K -rw-r--r--. 1 1169 1169  27K 3月   3 2016 Makefile.am
    208K -rw-r--r--. 1 1169 1169 208K 3月  20 2018 Makefile.in
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 makevp.bat
    4.0K -rw-r--r--. 1 1169 1169  345 1月  31 2014 makevp_c.txt
    4.0K -rw-r--r--. 1 1169 1169  598 1月  31 2014 makevp_l.txt
    8.0K -rwxr-xr-x. 1 1169 1169 6.8K 3月  20 2018 missing
     32K -rw-r--r--. 1 1169 1169  29K 3月  20 2018 NEWS
     32K -rw-r--r--. 1 1169 1169  31K 2月  21 2018 NON-AUTOTOOLS-BUILD
    4.0K -rw-r--r--. 1 1169 1169  229 1月  31 2014 NON-UNIX-USE
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_byte_order.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_chartables.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_compile.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_config.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_dfa_exec.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_exec.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_fullinfo.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_get.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_globals.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_jit_compile.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_maketables.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_newline.c
    4.0K -rw-r--r--. 1 1169 1169 3.2K 1月  31 2014 pcre16_ord2utf16.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_printint.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_refcount.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_string_utils.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_study.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_tables.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_ucd.c
    8.0K -rw-r--r--. 1 1169 1169 4.8K 1月  31 2014 pcre16_utf16_utils.c
    8.0K -rw-r--r--. 1 1169 1169 4.5K 1月  31 2014 pcre16_valid_utf16.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_version.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_xclass.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_byte_order.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_chartables.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_compile.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_config.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_dfa_exec.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_exec.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_fullinfo.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_get.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_globals.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_jit_compile.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_maketables.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_newline.c
    4.0K -rw-r--r--. 1 1169 1169 3.1K 1月  31 2014 pcre32_ord2utf32.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_printint.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_refcount.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_string_utils.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_study.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_tables.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_ucd.c
    8.0K -rw-r--r--. 1 1169 1169 5.0K 1月  31 2014 pcre32_utf32_utils.c
    8.0K -rw-r--r--. 1 1169 1169 4.1K 1月  31 2014 pcre32_valid_utf32.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_version.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_xclass.c
     12K -rw-r--r--. 1 1169 1169 9.1K 4月   4 2014 pcre_byte_order.c
    8.0K -rw-r--r--. 1 1169 1169 7.7K 1月  31 2014 pcre_chartables.c.dist
    316K -rw-r--r--. 1 1169 1169 315K 12月 12 2017 pcre_compile.c
    4.0K -rwxr-xr-x. 1 root root 2.4K 11月  7 11:55 pcre-config
    8.0K -rw-r--r--. 1 1169 1169 4.9K 1月  31 2014 pcre_config.c
    4.0K -rw-r--r--. 1 1169 1169 2.5K 1月  31 2014 pcre-config.in
    8.0K -rw-r--r--. 1 root root 6.7K 11月  7 11:55 pcrecpparg.h
    8.0K -rw-r--r--. 1 1169 1169 6.8K 1月  31 2014 pcrecpparg.h.in
     36K -rw-r--r--. 1 1169 1169  33K 6月  14 2016 pcrecpp.cc
     28K -rw-r--r--. 1 1169 1169  26K 1月  31 2014 pcrecpp.h
    4.0K -rw-r--r--. 1 1169 1169 2.9K 1月  31 2014 pcrecpp_internal.h
     40K -rw-r--r--. 1 1169 1169  39K 4月  22 2017 pcrecpp_unittest.cc
     16K -rw-r--r--. 1 1169 1169  16K 1月  31 2014 pcredemo.c
    124K -rw-r--r--. 1 1169 1169 124K 11月 17 2017 pcre_dfa_exec.c
    216K -rw-r--r--. 1 1169 1169 214K 2月  20 2018 pcre_exec.c
    8.0K -rw-r--r--. 1 1169 1169 7.7K 1月  31 2014 pcre_fullinfo.c
     24K -rw-r--r--. 1 1169 1169  23K 3月  27 2017 pcre_get.c
     28K -rw-r--r--. 1 1169 1169  26K 1月  31 2014 pcregexp.pas
    4.0K -rw-r--r--. 1 1169 1169 3.8K 2月   9 2014 pcre_globals.c
     96K -rw-r--r--. 1 1169 1169  96K 2月  25 2018 pcregrep.c
     32K -rw-r--r--. 1 root root  31K 11月  7 11:55 pcre.h
     32K -rw-r--r--. 1 1169 1169  31K 3月  20 2018 pcre.h.generic
     32K -rw-r--r--. 1 1169 1169  32K 8月  19 2017 pcre.h.in
    112K -rw-r--r--. 1 1169 1169 112K 6月  14 2017 pcre_internal.h
    356K -rw-r--r--. 1 1169 1169 356K 1月  11 2018 pcre_jit_compile.c
     72K -rw-r--r--. 1 1169 1169  72K 7月   2 2016 pcre_jit_test.c
    8.0K -rw-r--r--. 1 1169 1169 5.8K 1月  31 2014 pcre_maketables.c
    8.0K -rw-r--r--. 1 1169 1169 6.1K 1月  31 2014 pcre_newline.c
    4.0K -rw-r--r--. 1 1169 1169 3.2K 1月  31 2014 pcre_ord2utf8.c
     20K -rw-r--r--. 1 1169 1169  17K 2月  20 2018 pcreposix.c
    8.0K -rw-r--r--. 1 1169 1169 5.4K 1月  31 2014 pcreposix.h
     24K -rw-r--r--. 1 1169 1169  23K 1月  31 2014 pcre_printint.c
    4.0K -rw-r--r--. 1 1169 1169 3.7K 1月  31 2014 pcre_refcount.c
    8.0K -rw-r--r--. 1 1169 1169 5.5K 1月  31 2014 pcre_scanner.cc
    8.0K -rw-r--r--. 1 1169 1169 6.5K 1月  31 2014 pcre_scanner.h
    8.0K -rw-r--r--. 1 1169 1169 5.2K 4月  22 2017 pcre_scanner_unittest.cc
    4.0K -rw-r--r--. 1 1169 1169 1.9K 1月  31 2014 pcre_stringpiece.cc
    8.0K -rw-r--r--. 1 root root 6.2K 11月  7 11:55 pcre_stringpiece.h
    8.0K -rw-r--r--. 1 1169 1169 6.3K 4月  22 2017 pcre_stringpiece.h.in
    4.0K -rw-r--r--. 1 1169 1169 3.6K 4月  22 2017 pcre_stringpiece_unittest.cc
    8.0K -rw-r--r--. 1 1169 1169 5.3K 1月  31 2014 pcre_string_utils.c
     48K -rw-r--r--. 1 1169 1169  48K 2月  28 2016 pcre_study.c
     32K -rw-r--r--. 1 1169 1169  29K 4月  30 2017 pcre_tables.c
    172K -rw-r--r--. 1 1169 1169 170K 6月  14 2017 pcretest.c
    204K -rw-r--r--. 1 1169 1169 204K 2月  25 2017 pcre_ucd.c
     12K -rw-r--r--. 1 1169 1169  10K 1月  31 2014 pcre_valid_utf8.c
    8.0K -rw-r--r--. 1 1169 1169 4.2K 1月  31 2014 pcre_version.c
     12K -rw-r--r--. 1 1169 1169 8.1K 11月 18 2015 pcre_xclass.c
    8.0K -rwxr-xr-x. 1 1169 1169 6.2K 9月  15 2014 perltest.pl
    8.0K -rwxr-xr-x. 1 1169 1169 7.2K 1月  31 2014 PrepareRelease
     48K -rw-r--r--. 1 1169 1169  45K 2月  11 2015 README
     32K -rwxr-xr-x. 1 1169 1169  29K 5月  31 2016 RunGrepTest
     32K -rwxr-xr-x. 1 1169 1169  29K 3月   1 2016 RunTest
     20K -rw-r--r--. 1 1169 1169  18K 1月  31 2014 RunTest.bat
    4.0K drwxr-xr-x. 2 1169 1169 4.0K 3月  20 2018 sljit
    4.0K -rw-r--r--. 1 root root   23 11月  7 11:55 stamp-h1
    4.0K drwxr-xr-x. 2 1169 1169 4.0K 3月  20 2018 testdata
    8.0K -rwxr-xr-x. 1 1169 1169 4.6K 3月  20 2018 test-driver
    8.0K -rw-r--r--. 1 1169 1169 5.1K 9月  15 2014 ucp.h
    [root@bogon pcre-8.42]# make
    rm -f pcre_chartables.c
    ln -s ./pcre_chartables.c.dist pcre_chartables.c
    make  all-am
    make[1]: 进入目录“/usr/local/src/pcre-8.42”
      CC       libpcre_la-pcre_byte_order.lo
      CC       libpcre_la-pcre_compile.lo
      CC       libpcre_la-pcre_config.lo
      CC       libpcre_la-pcre_dfa_exec.lo
      CC       libpcre_la-pcre_exec.lo
      CC       libpcre_la-pcre_fullinfo.lo
      CC       libpcre_la-pcre_get.lo
      CC       libpcre_la-pcre_globals.lo
      CC       libpcre_la-pcre_jit_compile.lo
      CC       libpcre_la-pcre_maketables.lo
      CC       libpcre_la-pcre_newline.lo
      CC       libpcre_la-pcre_ord2utf8.lo
      CC       libpcre_la-pcre_refcount.lo
      CC       libpcre_la-pcre_string_utils.lo
      CC       libpcre_la-pcre_study.lo
      CC       libpcre_la-pcre_tables.lo
      CC       libpcre_la-pcre_ucd.lo
      CC       libpcre_la-pcre_valid_utf8.lo
      CC       libpcre_la-pcre_version.lo
      CC       libpcre_la-pcre_xclass.lo
      CC       libpcre_la-pcre_chartables.lo
      CCLD     libpcre.la
      CC       libpcreposix_la-pcreposix.lo
      CCLD     libpcreposix.la
      CXX      libpcrecpp_la-pcrecpp.lo
      CXX      libpcrecpp_la-pcre_scanner.lo
      CXX      libpcrecpp_la-pcre_stringpiece.lo
      CXXLD    libpcrecpp.la
      CC       pcretest-pcretest.o
      CC       pcretest-pcre_printint.o
      CCLD     pcretest
      CC       pcregrep-pcregrep.o
      CCLD     pcregrep
      CXX      pcrecpp_unittest-pcrecpp_unittest.o
      CXXLD    pcrecpp_unittest
      CXX      pcre_scanner_unittest-pcre_scanner_unittest.o
      CXXLD    pcre_scanner_unittest
      CXX      pcre_stringpiece_unittest-pcre_stringpiece_unittest.o
      CXXLD    pcre_stringpiece_unittest
    make[1]: 离开目录“/usr/local/src/pcre-8.42”
    [root@bogon pcre-8.42]# make install
    make  install-am
    make[1]: 进入目录“/usr/local/src/pcre-8.42”
    make[2]: 进入目录“/usr/local/src/pcre-8.42”
     /usr/bin/mkdir -p '/usr/local/lib'
     /bin/sh ./libtool   --mode=install /usr/bin/install -c   libpcre.la libpcreposix.la libpcrecpp.la '/usr/local/lib'
    libtool: install: /usr/bin/install -c .libs/libpcre.so.1.2.10 /usr/local/lib/libpcre.so.1.2.10
    libtool: install: (cd /usr/local/lib && { ln -s -f libpcre.so.1.2.10 libpcre.so.1 || { rm -f libpcre.so.1 && ln -s libpcre.s                                                                                                          o.1.2.10 libpcre.so.1; }; })
    libtool: install: (cd /usr/local/lib && { ln -s -f libpcre.so.1.2.10 libpcre.so || { rm -f libpcre.so && ln -s libpcre.so.1.                                                                                                          2.10 libpcre.so; }; })
    libtool: install: /usr/bin/install -c .libs/libpcre.lai /usr/local/lib/libpcre.la
    libtool: warning: relinking 'libpcreposix.la'
    libtool: install: (cd /usr/local/src/pcre-8.42; /bin/sh "/usr/local/src/pcre-8.42/libtool"  --silent --tag CC --mode=relink                                                                                                           gcc -fvisibility=hidden -g -O2 -version-info 0:6:0 -o libpcreposix.la -rpath /usr/local/lib libpcreposix_la-pcreposix.lo lib                                                                                                          pcre.la )
    libtool: install: /usr/bin/install -c .libs/libpcreposix.so.0.0.6T /usr/local/lib/libpcreposix.so.0.0.6
    libtool: install: (cd /usr/local/lib && { ln -s -f libpcreposix.so.0.0.6 libpcreposix.so.0 || { rm -f libpcreposix.so.0 && l                                                                                                          n -s libpcreposix.so.0.0.6 libpcreposix.so.0; }; })
    libtool: install: (cd /usr/local/lib && { ln -s -f libpcreposix.so.0.0.6 libpcreposix.so || { rm -f libpcreposix.so && ln -s                                                                                                           libpcreposix.so.0.0.6 libpcreposix.so; }; })
    libtool: install: /usr/bin/install -c .libs/libpcreposix.lai /usr/local/lib/libpcreposix.la
    libtool: warning: relinking 'libpcrecpp.la'
    libtool: install: (cd /usr/local/src/pcre-8.42; /bin/sh "/usr/local/src/pcre-8.42/libtool"  --silent --tag CXX --mode=relink                                                                                                           g++ -fvisibility=hidden -fvisibility-inlines-hidden -O2 -version-info 0:1:0 -o libpcrecpp.la -rpath /usr/local/lib libpcrec                                                                                                          pp_la-pcrecpp.lo libpcrecpp_la-pcre_scanner.lo libpcrecpp_la-pcre_stringpiece.lo libpcre.la )
    libtool: install: /usr/bin/install -c .libs/libpcrecpp.so.0.0.1T /usr/local/lib/libpcrecpp.so.0.0.1
    libtool: install: (cd /usr/local/lib && { ln -s -f libpcrecpp.so.0.0.1 libpcrecpp.so.0 || { rm -f libpcrecpp.so.0 && ln -s l                                                                                                          ibpcrecpp.so.0.0.1 libpcrecpp.so.0; }; })
    libtool: install: (cd /usr/local/lib && { ln -s -f libpcrecpp.so.0.0.1 libpcrecpp.so || { rm -f libpcrecpp.so && ln -s libpc                                                                                                          recpp.so.0.0.1 libpcrecpp.so; }; })
    libtool: install: /usr/bin/install -c .libs/libpcrecpp.lai /usr/local/lib/libpcrecpp.la
    libtool: install: /usr/bin/install -c .libs/libpcre.a /usr/local/lib/libpcre.a
    libtool: install: chmod 644 /usr/local/lib/libpcre.a
    libtool: install: ranlib /usr/local/lib/libpcre.a
    libtool: install: /usr/bin/install -c .libs/libpcreposix.a /usr/local/lib/libpcreposix.a
    libtool: install: chmod 644 /usr/local/lib/libpcreposix.a
    libtool: install: ranlib /usr/local/lib/libpcreposix.a
    libtool: install: /usr/bin/install -c .libs/libpcrecpp.a /usr/local/lib/libpcrecpp.a
    libtool: install: chmod 644 /usr/local/lib/libpcrecpp.a
    libtool: install: ranlib /usr/local/lib/libpcrecpp.a
    libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/sbin" ldconfig -n /usr/local/lib
    ----------------------------------------------------------------------
    Libraries have been installed in:
       /usr/local/lib
    
    If you ever happen to want to link against installed libraries
    in a given directory, LIBDIR, you must either use libtool, and
    specify the full pathname of the library, or use the '-LLIBDIR'
    flag during linking and do at least one of the following:
       - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
         during execution
       - add LIBDIR to the 'LD_RUN_PATH' environment variable
         during linking
       - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
       - have your system administrator add LIBDIR to '/etc/ld.so.conf'
    
    See any operating system documentation about shared libraries for
    more information, such as the ld(1) and ld.so(8) manual pages.
    ----------------------------------------------------------------------
     /usr/bin/mkdir -p '/usr/local/bin'
      /bin/sh ./libtool   --mode=install /usr/bin/install -c pcretest pcregrep '/usr/local/bin'
    libtool: install: /usr/bin/install -c .libs/pcretest /usr/local/bin/pcretest
    libtool: install: /usr/bin/install -c .libs/pcregrep /usr/local/bin/pcregrep
     /usr/bin/mkdir -p '/usr/local/bin'
     /usr/bin/install -c pcre-config '/usr/local/bin'
     /usr/bin/mkdir -p '/usr/local/share/doc/pcre'
     /usr/bin/install -c -m 644 doc/pcre.txt doc/pcre-config.txt doc/pcregrep.txt doc/pcretest.txt AUTHORS COPYING ChangeLog LIC                                                                                                          ENCE NEWS README '/usr/local/share/doc/pcre'
     /usr/bin/mkdir -p '/usr/local/share/doc/pcre/html'
     /usr/bin/install -c -m 644 doc/html/NON-AUTOTOOLS-BUILD.txt doc/html/README.txt doc/html/index.html doc/html/pcre-config.ht                                                                                                          ml doc/html/pcre.html doc/html/pcre16.html doc/html/pcre32.html doc/html/pcre_assign_jit_stack.html doc/html/pcre_compile.ht                                                                                                          ml doc/html/pcre_compile2.html doc/html/pcre_config.html doc/html/pcre_copy_named_substring.html doc/html/pcre_copy_substrin                                                                                                          g.html doc/html/pcre_dfa_exec.html doc/html/pcre_exec.html doc/html/pcre_free_study.html doc/html/pcre_free_substring.html d                                                                                                          oc/html/pcre_free_substring_list.html doc/html/pcre_fullinfo.html doc/html/pcre_get_named_substring.html doc/html/pcre_get_s                                                                                                          tringnumber.html doc/html/pcre_get_stringtable_entries.html doc/html/pcre_get_substring.html doc/html/pcre_get_substring_lis                                                                                                          t.html doc/html/pcre_jit_exec.html doc/html/pcre_jit_stack_alloc.html doc/html/pcre_jit_stack_free.html doc/html/pcre_maketa                                                                                                          bles.html doc/html/pcre_pattern_to_host_byte_order.html doc/html/pcre_refcount.html doc/html/pcre_study.html doc/html/pcre_u                                                                                                          tf16_to_host_byte_order.html doc/html/pcre_utf32_to_host_byte_order.html doc/html/pcre_version.html doc/html/pcreapi.html do                                                                                                          c/html/pcrebuild.html doc/html/pcrecallout.html doc/html/pcrecompat.html doc/html/pcredemo.html doc/html/pcregrep.html '/usr                                                                                                          /local/share/doc/pcre/html'
     /usr/bin/install -c -m 644 doc/html/pcrejit.html doc/html/pcrelimits.html doc/html/pcrematching.html doc/html/pcrepartial.h                                                                                                          tml doc/html/pcrepattern.html doc/html/pcreperform.html doc/html/pcreposix.html doc/html/pcreprecompile.html doc/html/pcresa                                                                                                          mple.html doc/html/pcrestack.html doc/html/pcresyntax.html doc/html/pcretest.html doc/html/pcreunicode.html '/usr/local/shar                                                                                                          e/doc/pcre/html'
     /usr/bin/mkdir -p '/usr/local/share/doc/pcre/html'
     /usr/bin/install -c -m 644 doc/html/pcrecpp.html '/usr/local/share/doc/pcre/html'
     /usr/bin/mkdir -p '/usr/local/include'
     /usr/bin/install -c -m 644 pcreposix.h pcrecpp.h pcre_scanner.h '/usr/local/include'
     /usr/bin/mkdir -p '/usr/local/share/man/man1'
     /usr/bin/install -c -m 644 doc/pcre-config.1 doc/pcregrep.1 doc/pcretest.1 '/usr/local/share/man/man1'
     /usr/bin/mkdir -p '/usr/local/share/man/man3'
     /usr/bin/install -c -m 644 doc/pcre.3 doc/pcre16.3 doc/pcre32.3 doc/pcre_assign_jit_stack.3 doc/pcre_compile.3 doc/pcre_com                                                                                                          pile2.3 doc/pcre_config.3 doc/pcre_copy_named_substring.3 doc/pcre_copy_substring.3 doc/pcre_dfa_exec.3 doc/pcre_exec.3 doc/                                                                                                          pcre_free_study.3 doc/pcre_free_substring.3 doc/pcre_free_substring_list.3 doc/pcre_fullinfo.3 doc/pcre_get_named_substring.                                                                                                          3 doc/pcre_get_stringnumber.3 doc/pcre_get_stringtable_entries.3 doc/pcre_get_substring.3 doc/pcre_get_substring_list.3 doc/                                                                                                          pcre_jit_exec.3 doc/pcre_jit_stack_alloc.3 doc/pcre_jit_stack_free.3 doc/pcre_maketables.3 doc/pcre_pattern_to_host_byte_ord                                                                                                          er.3 doc/pcre_refcount.3 doc/pcre_study.3 doc/pcre_utf16_to_host_byte_order.3 doc/pcre_utf32_to_host_byte_order.3 doc/pcre_v                                                                                                          ersion.3 doc/pcreapi.3 doc/pcrebuild.3 doc/pcrecallout.3 doc/pcrecompat.3 doc/pcredemo.3 doc/pcrejit.3 doc/pcrelimits.3 doc/                                                                                                          pcrematching.3 doc/pcrepartial.3 doc/pcrepattern.3 '/usr/local/share/man/man3'
     /usr/bin/install -c -m 644 doc/pcreperform.3 doc/pcreposix.3 doc/pcreprecompile.3 doc/pcresample.3 doc/pcrestack.3 doc/pcre                                                                                                          syntax.3 doc/pcreunicode.3 doc/pcrecpp.3 '/usr/local/share/man/man3'
     /usr/bin/mkdir -p '/usr/local/include'
     /usr/bin/install -c -m 644 pcre.h pcrecpparg.h pcre_stringpiece.h '/usr/local/include'
     /usr/bin/mkdir -p '/usr/local/lib/pkgconfig'
     /usr/bin/install -c -m 644 libpcre.pc libpcreposix.pc libpcrecpp.pc '/usr/local/lib/pkgconfig'
    make  install-data-hook
    make[3]: 进入目录“/usr/local/src/pcre-8.42”
    ln -sf pcre_assign_jit_stack.3           /usr/local/share/man/man3/pcre16_assign_jit_stack.3
    ln -sf pcre_compile.3                    /usr/local/share/man/man3/pcre16_compile.3
    ln -sf pcre_compile2.3                   /usr/local/share/man/man3/pcre16_compile2.3
    ln -sf pcre_config.3                     /usr/local/share/man/man3/pcre16_config.3
    ln -sf pcre_copy_named_substring.3       /usr/local/share/man/man3/pcre16_copy_named_substring.3
    ln -sf pcre_copy_substring.3             /usr/local/share/man/man3/pcre16_copy_substring.3
    ln -sf pcre_dfa_exec.3                   /usr/local/share/man/man3/pcre16_dfa_exec.3
    ln -sf pcre_exec.3                       /usr/local/share/man/man3/pcre16_exec.3
    ln -sf pcre_free_study.3                 /usr/local/share/man/man3/pcre16_free_study.3
    ln -sf pcre_free_substring.3             /usr/local/share/man/man3/pcre16_free_substring.3
    ln -sf pcre_free_substring_list.3        /usr/local/share/man/man3/pcre16_free_substring_list.3
    ln -sf pcre_fullinfo.3                   /usr/local/share/man/man3/pcre16_fullinfo.3
    ln -sf pcre_get_named_substring.3        /usr/local/share/man/man3/pcre16_get_named_substring.3
    ln -sf pcre_get_stringnumber.3           /usr/local/share/man/man3/pcre16_get_stringnumber.3
    ln -sf pcre_get_stringtable_entries.3    /usr/local/share/man/man3/pcre16_get_stringtable_entries.3
    ln -sf pcre_get_substring.3              /usr/local/share/man/man3/pcre16_get_substring.3
    ln -sf pcre_get_substring_list.3         /usr/local/share/man/man3/pcre16_get_substring_list.3
    ln -sf pcre_jit_exec.3                   /usr/local/share/man/man3/pcre16_jit_exec.3
    ln -sf pcre_jit_stack_alloc.3            /usr/local/share/man/man3/pcre16_jit_stack_alloc.3
    ln -sf pcre_jit_stack_free.3             /usr/local/share/man/man3/pcre16_jit_stack_free.3
    ln -sf pcre_maketables.3                 /usr/local/share/man/man3/pcre16_maketables.3
    ln -sf pcre_pattern_to_host_byte_order.3 /usr/local/share/man/man3/pcre16_pattern_to_host_byte_order.3
    ln -sf pcre_refcount.3                   /usr/local/share/man/man3/pcre16_refcount.3
    ln -sf pcre_study.3                      /usr/local/share/man/man3/pcre16_study.3
    ln -sf pcre_utf16_to_host_byte_order.3   /usr/local/share/man/man3/pcre16_utf16_to_host_byte_order.3
    ln -sf pcre_version.3                    /usr/local/share/man/man3/pcre16_version.3
    ln -sf pcre_assign_jit_stack.3           /usr/local/share/man/man3/pcre32_assign_jit_stack.3
    ln -sf pcre_compile.3                    /usr/local/share/man/man3/pcre32_compile.3
    ln -sf pcre_compile2.3                   /usr/local/share/man/man3/pcre32_compile2.3
    ln -sf pcre_config.3                     /usr/local/share/man/man3/pcre32_config.3
    ln -sf pcre_copy_named_substring.3       /usr/local/share/man/man3/pcre32_copy_named_substring.3
    ln -sf pcre_copy_substring.3             /usr/local/share/man/man3/pcre32_copy_substring.3
    ln -sf pcre_dfa_exec.3                   /usr/local/share/man/man3/pcre32_dfa_exec.3
    ln -sf pcre_exec.3                       /usr/local/share/man/man3/pcre32_exec.3
    ln -sf pcre_free_study.3                 /usr/local/share/man/man3/pcre32_free_study.3
    ln -sf pcre_free_substring.3             /usr/local/share/man/man3/pcre32_free_substring.3
    ln -sf pcre_free_substring_list.3        /usr/local/share/man/man3/pcre32_free_substring_list.3
    ln -sf pcre_fullinfo.3                   /usr/local/share/man/man3/pcre32_fullinfo.3
    ln -sf pcre_get_named_substring.3        /usr/local/share/man/man3/pcre32_get_named_substring.3
    ln -sf pcre_get_stringnumber.3           /usr/local/share/man/man3/pcre32_get_stringnumber.3
    ln -sf pcre_get_stringtable_entries.3    /usr/local/share/man/man3/pcre32_get_stringtable_entries.3
    ln -sf pcre_get_substring.3              /usr/local/share/man/man3/pcre32_get_substring.3
    ln -sf pcre_get_substring_list.3         /usr/local/share/man/man3/pcre32_get_substring_list.3
    ln -sf pcre_jit_exec.3                   /usr/local/share/man/man3/pcre32_jit_exec.3
    ln -sf pcre_jit_stack_alloc.3            /usr/local/share/man/man3/pcre32_jit_stack_alloc.3
    ln -sf pcre_jit_stack_free.3             /usr/local/share/man/man3/pcre32_jit_stack_free.3
    ln -sf pcre_maketables.3                 /usr/local/share/man/man3/pcre32_maketables.3
    ln -sf pcre_pattern_to_host_byte_order.3 /usr/local/share/man/man3/pcre32_pattern_to_host_byte_order.3
    ln -sf pcre_refcount.3                   /usr/local/share/man/man3/pcre32_refcount.3
    ln -sf pcre_study.3                      /usr/local/share/man/man3/pcre32_study.3
    ln -sf pcre_utf32_to_host_byte_order.3   /usr/local/share/man/man3/pcre32_utf32_to_host_byte_order.3
    ln -sf pcre_version.3                    /usr/local/share/man/man3/pcre32_version.3
    make[3]: 离开目录“/usr/local/src/pcre-8.42”
    make[2]: 离开目录“/usr/local/src/pcre-8.42”
    make[1]: 离开目录“/usr/local/src/pcre-8.42”
    [root@bogon pcre-8.42]# ll -ash
    总用量 7.6M
     16K drwxr-xr-x. 9 1169 1169  12K 11月  7 11:55 .
       0 drwxr-xr-x. 3 root root   74 11月  7 11:54 ..
    8.0K -rwxr-xr-x. 1 1169 1169 6.9K 10月 28 2015 132html
     56K -rw-r--r--. 1 1169 1169  54K 3月  20 2018 aclocal.m4
    8.0K -rwxr-xr-x. 1 1169 1169 5.7K 3月  20 2018 ar-lib
    4.0K -rw-r--r--. 1 1169 1169  851 2月  21 2018 AUTHORS
    292K -rw-r--r--. 1 1169 1169 290K 3月  20 2018 ChangeLog
    4.0K -rwxr-xr-x. 1 1169 1169 1.5K 1月  31 2014 CheckMan
    4.0K -rwxr-xr-x. 1 1169 1169 2.9K 1月  31 2014 CleanTxt
       0 drwxr-xr-x. 2 1169 1169  130 3月  20 2018 cmake
     36K -rw-r--r--. 1 1169 1169  34K 1月  24 2017 CMakeLists.txt
    8.0K -rwxr-xr-x. 1 1169 1169 7.3K 3月  20 2018 compile
    4.0K -rw-r--r--. 1 1169 1169 1.6K 1月  31 2014 config-cmake.h.in
     44K -rwxr-xr-x. 1 1169 1169  44K 3月  20 2018 config.guess
     16K -rw-r--r--. 1 root root  14K 11月  7 11:55 config.h
     16K -rw-r--r--. 1 1169 1169  14K 3月  20 2018 config.h.generic
     16K -rw-r--r--. 1 1169 1169  14K 3月  20 2018 config.h.in
    192K -rw-r--r--. 1 root root  73K 11月  7 11:55 config.log
     72K -rwxr-xr-x. 1 root root  70K 11月  7 11:55 config.status
     36K -rwxr-xr-x. 1 1169 1169  36K 3月  20 2018 config.sub
    688K -rwxr-xr-x. 1 1169 1169 687K 3月  20 2018 configure
     44K -rw-r--r--. 1 1169 1169  42K 3月  20 2018 configure.ac
    4.0K -rw-r--r--. 1 1169 1169   95 1月  31 2014 COPYING
     24K -rwxr-xr-x. 1 1169 1169  24K 3月  20 2018 depcomp
    8.0K drwxr-xr-x. 2 root root 4.0K 11月  7 11:55 .deps
    4.0K -rwxr-xr-x. 1 1169 1169  643 1月  31 2014 Detrail
    8.0K -rw-r--r--. 1 1169 1169 6.9K 1月  31 2014 dftables.c
    4.0K drwxr-xr-x. 3 1169 1169 4.0K 3月  20 2018 doc
     24K -rw-r--r--. 1 1169 1169  24K 1月  31 2014 HACKING
     16K -rw-r--r--. 1 1169 1169  16K 3月  20 2018 INSTALL
     16K -rwxr-xr-x. 1 1169 1169  15K 3月  20 2018 install-sh
    4.0K -rw-r--r--. 1 root root  328 11月  7 11:55 libpcre16.pc
    4.0K -rw-r--r--. 1 1169 1169  377 4月  24 2015 libpcre16.pc.in
    4.0K -rw-r--r--. 1 root root  328 11月  7 11:55 libpcre32.pc
    4.0K -rw-r--r--. 1 1169 1169  377 4月  24 2015 libpcre32.pc.in
    4.0K -rw-r--r--. 1 root root 1.4K 11月  7 11:55 libpcrecpp.la
    4.0K -rw-r--r--. 1 root root  329 11月  7 11:55 libpcrecpp_la-pcrecpp.lo
     32K -rw-r--r--. 1 root root  29K 11月  7 11:55 libpcrecpp_la-pcrecpp.o
    4.0K -rw-r--r--. 1 root root  344 11月  7 11:55 libpcrecpp_la-pcre_scanner.lo
     12K -rw-r--r--. 1 root root 9.7K 11月  7 11:55 libpcrecpp_la-pcre_scanner.o
    4.0K -rw-r--r--. 1 root root  356 11月  7 11:55 libpcrecpp_la-pcre_stringpiece.lo
    4.0K -rw-r--r--. 1 root root 3.2K 11月  7 11:55 libpcrecpp_la-pcre_stringpiece.o
    4.0K -rw-r--r--. 1 root root  269 11月  7 11:55 libpcrecpp.pc
    4.0K -rw-r--r--. 1 1169 1169  288 1月  31 2014 libpcrecpp.pc.in
    4.0K -rw-r--r--. 1 root root  931 11月  7 11:55 libpcre.la
    4.0K -rw-r--r--. 1 root root  344 11月  7 11:55 libpcre_la-pcre_byte_order.lo
     12K -rw-r--r--. 1 root root 8.8K 11月  7 11:55 libpcre_la-pcre_byte_order.o
    4.0K -rw-r--r--. 1 root root  344 11月  7 11:55 libpcre_la-pcre_chartables.lo
    8.0K -rw-r--r--. 1 root root 6.0K 11月  7 11:55 libpcre_la-pcre_chartables.o
    4.0K -rw-r--r--. 1 root root  335 11月  7 11:55 libpcre_la-pcre_compile.lo
    416K -rw-r--r--. 1 root root 416K 11月  7 11:55 libpcre_la-pcre_compile.o
    4.0K -rw-r--r--. 1 root root  332 11月  7 11:55 libpcre_la-pcre_config.lo
    8.0K -rw-r--r--. 1 root root 6.4K 11月  7 11:55 libpcre_la-pcre_config.o
    4.0K -rw-r--r--. 1 root root  338 11月  7 11:55 libpcre_la-pcre_dfa_exec.lo
    136K -rw-r--r--. 1 root root 134K 11月  7 11:55 libpcre_la-pcre_dfa_exec.o
    4.0K -rw-r--r--. 1 root root  326 11月  7 11:55 libpcre_la-pcre_exec.lo
    124K -rw-r--r--. 1 root root 121K 11月  7 11:55 libpcre_la-pcre_exec.o
    4.0K -rw-r--r--. 1 root root  338 11月  7 11:55 libpcre_la-pcre_fullinfo.lo
     12K -rw-r--r--. 1 root root  11K 11月  7 11:55 libpcre_la-pcre_fullinfo.o
    4.0K -rw-r--r--. 1 root root  323 11月  7 11:55 libpcre_la-pcre_get.lo
     28K -rw-r--r--. 1 root root  26K 11月  7 11:55 libpcre_la-pcre_get.o
    4.0K -rw-r--r--. 1 root root  335 11月  7 11:55 libpcre_la-pcre_globals.lo
    8.0K -rw-r--r--. 1 root root 6.5K 11月  7 11:55 libpcre_la-pcre_globals.o
    4.0K -rw-r--r--. 1 root root  347 11月  7 11:55 libpcre_la-pcre_jit_compile.lo
    8.0K -rw-r--r--. 1 root root 6.9K 11月  7 11:55 libpcre_la-pcre_jit_compile.o
    4.0K -rw-r--r--. 1 root root  344 11月  7 11:55 libpcre_la-pcre_maketables.lo
     12K -rw-r--r--. 1 root root  11K 11月  7 11:55 libpcre_la-pcre_maketables.o
    4.0K -rw-r--r--. 1 root root  335 11月  7 11:55 libpcre_la-pcre_newline.lo
    8.0K -rw-r--r--. 1 root root 7.0K 11月  7 11:55 libpcre_la-pcre_newline.o
    4.0K -rw-r--r--. 1 root root  338 11月  7 11:55 libpcre_la-pcre_ord2utf8.lo
    8.0K -rw-r--r--. 1 root root 5.4K 11月  7 11:55 libpcre_la-pcre_ord2utf8.o
    4.0K -rw-r--r--. 1 root root  338 11月  7 11:55 libpcre_la-pcre_refcount.lo
    8.0K -rw-r--r--. 1 root root 6.7K 11月  7 11:55 libpcre_la-pcre_refcount.o
    4.0K -rw-r--r--. 1 root root  350 11月  7 11:55 libpcre_la-pcre_string_utils.lo
    8.0K -rw-r--r--. 1 root root 4.6K 11月  7 11:55 libpcre_la-pcre_string_utils.o
    4.0K -rw-r--r--. 1 root root  329 11月  7 11:55 libpcre_la-pcre_study.lo
     52K -rw-r--r--. 1 root root  51K 11月  7 11:55 libpcre_la-pcre_study.o
    4.0K -rw-r--r--. 1 root root  332 11月  7 11:55 libpcre_la-pcre_tables.lo
    8.0K -rw-r--r--. 1 root root 5.5K 11月  7 11:55 libpcre_la-pcre_tables.o
    4.0K -rw-r--r--. 1 root root  323 11月  7 11:55 libpcre_la-pcre_ucd.lo
    8.0K -rw-r--r--. 1 root root 5.8K 11月  7 11:55 libpcre_la-pcre_ucd.o
    4.0K -rw-r--r--. 1 root root  344 11月  7 11:55 libpcre_la-pcre_valid_utf8.lo
    8.0K -rw-r--r--. 1 root root 5.5K 11月  7 11:55 libpcre_la-pcre_valid_utf8.o
    4.0K -rw-r--r--. 1 root root  335 11月  7 11:55 libpcre_la-pcre_version.lo
    8.0K -rw-r--r--. 1 root root 5.4K 11月  7 11:55 libpcre_la-pcre_version.o
    4.0K -rw-r--r--. 1 root root  332 11月  7 11:55 libpcre_la-pcre_xclass.lo
    8.0K -rw-r--r--. 1 root root 6.9K 11月  7 11:55 libpcre_la-pcre_xclass.o
    4.0K -rw-r--r--. 1 root root  323 11月  7 11:55 libpcre.pc
    4.0K -rw-r--r--. 1 1169 1169  372 4月  24 2015 libpcre.pc.in
    4.0K -rw-r--r--. 1 root root 1.3K 11月  7 11:55 libpcreposix.la
    4.0K -rw-r--r--. 1 root root  341 11月  7 11:55 libpcreposix_la-pcreposix.lo
     24K -rw-r--r--. 1 root root  24K 11月  7 11:55 libpcreposix_la-pcreposix.o
    4.0K -rw-r--r--. 1 root root  311 11月  7 11:55 libpcreposix.pc
    4.0K -rw-r--r--. 1 1169 1169  330 1月  31 2014 libpcreposix.pc.in
    4.0K drwxr-xr-x. 2 root root 4.0K 11月  7 11:55 .libs
    448K -rwxr-xr-x. 1 root root 344K 11月  7 11:55 libtool
    4.0K -rw-r--r--. 1 1169 1169 3.2K 2月  21 2018 LICENCE
    324K -rw-r--r--. 1 1169 1169 324K 3月  20 2018 ltmain.sh
       0 drwxr-xr-x. 2 1169 1169  151 3月  20 2018 m4
    184K -rw-r--r--. 1 root root 183K 11月  7 11:55 Makefile
     28K -rw-r--r--. 1 1169 1169  27K 3月   3 2016 Makefile.am
    208K -rw-r--r--. 1 1169 1169 208K 3月  20 2018 Makefile.in
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 makevp.bat
    4.0K -rw-r--r--. 1 1169 1169  345 1月  31 2014 makevp_c.txt
    4.0K -rw-r--r--. 1 1169 1169  598 1月  31 2014 makevp_l.txt
    8.0K -rwxr-xr-x. 1 1169 1169 6.8K 3月  20 2018 missing
     32K -rw-r--r--. 1 1169 1169  29K 3月  20 2018 NEWS
     32K -rw-r--r--. 1 1169 1169  31K 2月  21 2018 NON-AUTOTOOLS-BUILD
    4.0K -rw-r--r--. 1 1169 1169  229 1月  31 2014 NON-UNIX-USE
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_byte_order.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_chartables.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_compile.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_config.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_dfa_exec.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_exec.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_fullinfo.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_get.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_globals.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_jit_compile.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_maketables.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_newline.c
    4.0K -rw-r--r--. 1 1169 1169 3.2K 1月  31 2014 pcre16_ord2utf16.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_printint.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_refcount.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_string_utils.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_study.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_tables.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_ucd.c
    8.0K -rw-r--r--. 1 1169 1169 4.8K 1月  31 2014 pcre16_utf16_utils.c
    8.0K -rw-r--r--. 1 1169 1169 4.5K 1月  31 2014 pcre16_valid_utf16.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_version.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre16_xclass.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_byte_order.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_chartables.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_compile.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_config.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_dfa_exec.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_exec.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_fullinfo.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_get.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_globals.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_jit_compile.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_maketables.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_newline.c
    4.0K -rw-r--r--. 1 1169 1169 3.1K 1月  31 2014 pcre32_ord2utf32.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_printint.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_refcount.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_string_utils.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_study.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_tables.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_ucd.c
    8.0K -rw-r--r--. 1 1169 1169 5.0K 1月  31 2014 pcre32_utf32_utils.c
    8.0K -rw-r--r--. 1 1169 1169 4.1K 1月  31 2014 pcre32_valid_utf32.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_version.c
    4.0K -rw-r--r--. 1 1169 1169 2.2K 1月  31 2014 pcre32_xclass.c
     12K -rw-r--r--. 1 1169 1169 9.1K 4月   4 2014 pcre_byte_order.c
       0 lrwxrwxrwx. 1 root root   24 11月  7 11:55 pcre_chartables.c -> ./pcre_chartables.c.dist
    8.0K -rw-r--r--. 1 1169 1169 7.7K 1月  31 2014 pcre_chartables.c.dist
    316K -rw-r--r--. 1 1169 1169 315K 12月 12 2017 pcre_compile.c
    4.0K -rwxr-xr-x. 1 root root 2.4K 11月  7 11:55 pcre-config
    8.0K -rw-r--r--. 1 1169 1169 4.9K 1月  31 2014 pcre_config.c
    4.0K -rw-r--r--. 1 1169 1169 2.5K 1月  31 2014 pcre-config.in
    8.0K -rw-r--r--. 1 root root 6.7K 11月  7 11:55 pcrecpparg.h
    8.0K -rw-r--r--. 1 1169 1169 6.8K 1月  31 2014 pcrecpparg.h.in
     36K -rw-r--r--. 1 1169 1169  33K 6月  14 2016 pcrecpp.cc
     28K -rw-r--r--. 1 1169 1169  26K 1月  31 2014 pcrecpp.h
    4.0K -rw-r--r--. 1 1169 1169 2.9K 1月  31 2014 pcrecpp_internal.h
    8.0K -rwxr-xr-x. 1 root root 7.5K 11月  7 11:55 pcrecpp_unittest
     40K -rw-r--r--. 1 1169 1169  39K 4月  22 2017 pcrecpp_unittest.cc
    260K -rw-r--r--. 1 root root 258K 11月  7 11:55 pcrecpp_unittest-pcrecpp_unittest.o
     16K -rw-r--r--. 1 1169 1169  16K 1月  31 2014 pcredemo.c
    124K -rw-r--r--. 1 1169 1169 124K 11月 17 2017 pcre_dfa_exec.c
    216K -rw-r--r--. 1 1169 1169 214K 2月  20 2018 pcre_exec.c
    8.0K -rw-r--r--. 1 1169 1169 7.7K 1月  31 2014 pcre_fullinfo.c
     24K -rw-r--r--. 1 1169 1169  23K 3月  27 2017 pcre_get.c
     28K -rw-r--r--. 1 1169 1169  26K 1月  31 2014 pcregexp.pas
    4.0K -rw-r--r--. 1 1169 1169 3.8K 2月   9 2014 pcre_globals.c
    8.0K -rwxr-xr-x. 1 root root 7.5K 11月  7 11:55 pcregrep
     96K -rw-r--r--. 1 1169 1169  96K 2月  25 2018 pcregrep.c
    208K -rw-r--r--. 1 root root 206K 11月  7 11:55 pcregrep-pcregrep.o
     32K -rw-r--r--. 1 root root  31K 11月  7 11:55 pcre.h
     32K -rw-r--r--. 1 1169 1169  31K 3月  20 2018 pcre.h.generic
     32K -rw-r--r--. 1 1169 1169  32K 8月  19 2017 pcre.h.in
    112K -rw-r--r--. 1 1169 1169 112K 6月  14 2017 pcre_internal.h
    356K -rw-r--r--. 1 1169 1169 356K 1月  11 2018 pcre_jit_compile.c
     72K -rw-r--r--. 1 1169 1169  72K 7月   2 2016 pcre_jit_test.c
    8.0K -rw-r--r--. 1 1169 1169 5.8K 1月  31 2014 pcre_maketables.c
    8.0K -rw-r--r--. 1 1169 1169 6.1K 1月  31 2014 pcre_newline.c
    4.0K -rw-r--r--. 1 1169 1169 3.2K 1月  31 2014 pcre_ord2utf8.c
     20K -rw-r--r--. 1 1169 1169  17K 2月  20 2018 pcreposix.c
    8.0K -rw-r--r--. 1 1169 1169 5.4K 1月  31 2014 pcreposix.h
     24K -rw-r--r--. 1 1169 1169  23K 1月  31 2014 pcre_printint.c
    4.0K -rw-r--r--. 1 1169 1169 3.7K 1月  31 2014 pcre_refcount.c
    8.0K -rw-r--r--. 1 1169 1169 5.5K 1月  31 2014 pcre_scanner.cc
    8.0K -rw-r--r--. 1 1169 1169 6.5K 1月  31 2014 pcre_scanner.h
    8.0K -rwxr-xr-x. 1 root root 7.6K 11月  7 11:55 pcre_scanner_unittest
    8.0K -rw-r--r--. 1 1169 1169 5.2K 4月  22 2017 pcre_scanner_unittest.cc
     20K -rw-r--r--. 1 root root  17K 11月  7 11:55 pcre_scanner_unittest-pcre_scanner_unittest.o
    4.0K -rw-r--r--. 1 1169 1169 1.9K 1月  31 2014 pcre_stringpiece.cc
    8.0K -rw-r--r--. 1 root root 6.2K 11月  7 11:55 pcre_stringpiece.h
    8.0K -rw-r--r--. 1 1169 1169 6.3K 4月  22 2017 pcre_stringpiece.h.in
    8.0K -rwxr-xr-x. 1 root root 7.6K 11月  7 11:55 pcre_stringpiece_unittest
    4.0K -rw-r--r--. 1 1169 1169 3.6K 4月  22 2017 pcre_stringpiece_unittest.cc
     24K -rw-r--r--. 1 root root  23K 11月  7 11:55 pcre_stringpiece_unittest-pcre_stringpiece_unittest.o
    8.0K -rw-r--r--. 1 1169 1169 5.3K 1月  31 2014 pcre_string_utils.c
     48K -rw-r--r--. 1 1169 1169  48K 2月  28 2016 pcre_study.c
     32K -rw-r--r--. 1 1169 1169  29K 4月  30 2017 pcre_tables.c
    8.0K -rwxr-xr-x. 1 root root 7.5K 11月  7 11:55 pcretest
    172K -rw-r--r--. 1 1169 1169 170K 6月  14 2017 pcretest.c
     56K -rw-r--r--. 1 root root  53K 11月  7 11:55 pcretest-pcre_printint.o
    392K -rw-r--r--. 1 root root 391K 11月  7 11:55 pcretest-pcretest.o
    204K -rw-r--r--. 1 1169 1169 204K 2月  25 2017 pcre_ucd.c
     12K -rw-r--r--. 1 1169 1169  10K 1月  31 2014 pcre_valid_utf8.c
    8.0K -rw-r--r--. 1 1169 1169 4.2K 1月  31 2014 pcre_version.c
     12K -rw-r--r--. 1 1169 1169 8.1K 11月 18 2015 pcre_xclass.c
    8.0K -rwxr-xr-x. 1 1169 1169 6.2K 9月  15 2014 perltest.pl
    8.0K -rwxr-xr-x. 1 1169 1169 7.2K 1月  31 2014 PrepareRelease
     48K -rw-r--r--. 1 1169 1169  45K 2月  11 2015 README
     32K -rwxr-xr-x. 1 1169 1169  29K 5月  31 2016 RunGrepTest
     32K -rwxr-xr-x. 1 1169 1169  29K 3月   1 2016 RunTest
     20K -rw-r--r--. 1 1169 1169  18K 1月  31 2014 RunTest.bat
    4.0K drwxr-xr-x. 2 1169 1169 4.0K 3月  20 2018 sljit
    4.0K -rw-r--r--. 1 root root   23 11月  7 11:55 stamp-h1
    4.0K drwxr-xr-x. 2 1169 1169 4.0K 3月  20 2018 testdata
    8.0K -rwxr-xr-x. 1 1169 1169 4.6K 3月  20 2018 test-driver
    8.0K -rw-r--r--. 1 1169 1169 5.1K 9月  15 2014 ucp.h
    [root@bogon pcre-8.42]# make clean
     rm -f pcretest pcregrep
    test -z "pcre_chartables.c testsavedregex teststderr testtemp* testtry testNinput testtrygrep teststderrgrep testNinputgrep"                                                                                                           || rm -f pcre_chartables.c testsavedregex teststderr testtemp* testtry testNinput testtrygrep teststderrgrep testNinputgrep
    test -z "libpcre.la   libpcreposix.la libpcrecpp.la" || rm -f libpcre.la   libpcreposix.la libpcrecpp.la
    rm -f ./so_locations
    rm -rf .libs _libs
     rm -f pcrecpp_unittest pcre_scanner_unittest pcre_stringpiece_unittest
    rm -f *.o
    test -z "pcrecpp_unittest.log pcre_scanner_unittest.log pcre_stringpiece_unittest.log RunTest.log RunGrepTest.log" || rm -f                                                                                                           pcrecpp_unittest.log pcre_scanner_unittest.log pcre_stringpiece_unittest.log RunTest.log RunGrepTest.log
    test -z "pcrecpp_unittest.trs pcre_scanner_unittest.trs pcre_stringpiece_unittest.trs RunTest.trs RunGrepTest.trs" || rm -f                                                                                                           pcrecpp_unittest.trs pcre_scanner_unittest.trs pcre_stringpiece_unittest.trs RunTest.trs RunGrepTest.trs
    test -z "test-suite.log" || rm -f test-suite.log
    rm -f *.lo
    [root@bogon pcre-8.42]#
    

      

    [root@bogon src]# cd zlib-1.2.8/
    [root@bogon zlib-1.2.8]# ll -as
    总用量 800
     4 drwxr-xr-x. 14  501 games  4096 4月  29 2013 .
     0 drwxr-xr-x.  4 root root    146 11月  7 12:06 ..
     8 -rw-r--r--.  1  501 games  4968 9月  11 2011 adler32.c
     0 drwxr-xr-x.  2  501 games    46 2月  14 2010 amiga
     0 drwxr-xr-x.  2  501 games    73 4月  29 2013 as400
    76 -rw-r--r--.  1  501 games 76402 4月  29 2013 ChangeLog
     8 -rw-r--r--.  1  501 games  8098 4月  29 2013 CMakeLists.txt
     4 -rw-r--r--.  1  501 games  2529 8月  13 2012 compress.c
    28 -rwxr-xr-x.  1  501 games 26082 3月  24 2013 configure
     4 drwxr-xr-x. 22  501 games  4096 4月  29 2013 contrib
    16 -rw-r--r--.  1  501 games 13174 4月  30 2012 crc32.c
    32 -rw-r--r--.  1  501 games 30562 4月  30 2012 crc32.h
    72 -rw-r--r--.  1  501 games 71476 4月  29 2013 deflate.c
    16 -rw-r--r--.  1  501 games 12774 6月   3 2012 deflate.h
     0 drwxr-xr-x.  2  501 games   104 9月  11 2011 doc
     0 drwxr-xr-x.  2  501 games   188 10月 12 2012 examples
    20 -rw-r--r--.  1  501 games 16573 11月 28 2011 FAQ
     4 -rw-r--r--.  1  501 games   678 2月  14 2010 gzclose.c
     8 -rw-r--r--.  1  501 games  6552 4月  14 2013 gzguts.h
    20 -rw-r--r--.  1  501 games 16415 3月  25 2013 gzlib.c
    20 -rw-r--r--.  1  501 games 18694 3月  25 2013 gzread.c
    16 -rw-r--r--.  1  501 games 16199 4月  14 2013 gzwrite.c
     4 -rw-r--r--.  1  501 games  1988 3月  12 2012 INDEX
    24 -rw-r--r--.  1  501 games 22709 8月  13 2012 infback.c
    16 -rw-r--r--.  1  501 games 13455 3月  25 2013 inffast.c
     4 -rw-r--r--.  1  501 games   427 4月  19 2010 inffast.h
     8 -rw-r--r--.  1  501 games  6332 10月  6 2011 inffixed.h
    56 -rw-r--r--.  1  501 games 53512 8月  13 2012 inflate.c
     8 -rw-r--r--.  1  501 games  6399 12月 26 2009 inflate.h
    16 -rw-r--r--.  1  501 games 13028 4月  29 2013 inftrees.c
     4 -rw-r--r--.  1  501 games  2928 4月  19 2010 inftrees.h
     4 -rw-r--r--.  1  501 games   100 9月  10 2011 Makefile
    12 -rw-r--r--.  1  501 games  8985 4月  29 2013 Makefile.in
    28 -rw-r--r--.  1  501 games 26402 3月  10 2012 make_vms.com
     0 drwxr-xr-x.  2  501 games   105 11月 28 2011 msdos
     0 drwxr-xr-x.  2  501 games    36 12月 21 2009 nintendods
     0 drwxr-xr-x.  3  501 games   117 3月  13 2012 old
     0 drwxr-xr-x.  2  501 games    25 4月  29 2013 qnx
     8 -rw-r--r--.  1  501 games  5185 4月  29 2013 README
     0 drwxr-xr-x.  2  501 games    59 8月  13 2012 test
     4 -rw-r--r--.  1  501 games  3135 4月  29 2013 treebuild.xml
    44 -rw-r--r--.  1  501 games 44255 8月  13 2012 trees.c
    12 -rw-r--r--.  1  501 games  8472 4月  19 2010 trees.h
     4 -rw-r--r--.  1  501 games  2003 8月  13 2012 uncompr.c
     0 drwxr-xr-x.  2  501 games    46 2月  14 2010 watcom
     0 drwxr-xr-x.  2  501 games   160 4月  29 2013 win32
    16 -rw-r--r--.  1  501 games 15508 4月  29 2013 zconf.h
    16 -rw-r--r--.  1  501 games 15559 4月  29 2013 zconf.h.cmakein
    16 -rw-r--r--.  1  501 games 15508 4月  29 2013 zconf.h.in
     4 -rwxr-xr-x.  1  501 games  3895 10月 15 2006 zlib2ansi
     8 -rw-r--r--.  1  501 games  4236 4月  29 2013 zlib.3
    12 -rw-r--r--.  1  501 games  8734 4月  29 2013 zlib.3.pdf
    88 -rw-r--r--.  1  501 games 87883 4月  29 2013 zlib.h
     4 -rw-r--r--.  1  501 games  1192 3月  24 2013 zlib.map
     4 -rw-r--r--.  1  501 games   294 3月  12 2012 zlib.pc.cmakein
     4 -rw-r--r--.  1  501 games   254 4月  18 2010 zlib.pc.in
     8 -rw-r--r--.  1  501 games  7414 8月  13 2012 zutil.c
     8 -rw-r--r--.  1  501 games  6766 3月  25 2013 zutil.h
    [root@bogon zlib-1.2.8]# ./configure
    Checking for gcc...
    Checking for shared library support...
    Building shared library libz.so.1.2.8 with gcc.
    Checking for off64_t... Yes.
    Checking for fseeko... Yes.
    Checking for strerror... Yes.
    Checking for unistd.h... Yes.
    Checking for stdarg.h... Yes.
    Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().
    Checking for vsnprintf() in stdio.h... Yes.
    Checking for return value of vsnprintf()... Yes.
    Checking for attribute(visibility) support... Yes.
    [root@bogon zlib-1.2.8]# ll -as
    总用量 816
     4 drwxr-xr-x. 14  501 games  4096 11月  7 12:06 .
     0 drwxr-xr-x.  4 root root    146 11月  7 12:06 ..
     8 -rw-r--r--.  1  501 games  4968 9月  11 2011 adler32.c
     0 drwxr-xr-x.  2  501 games    46 2月  14 2010 amiga
     0 drwxr-xr-x.  2  501 games    73 4月  29 2013 as400
    76 -rw-r--r--.  1  501 games 76402 4月  29 2013 ChangeLog
     8 -rw-r--r--.  1  501 games  8098 4月  29 2013 CMakeLists.txt
     4 -rw-r--r--.  1  501 games  2529 8月  13 2012 compress.c
    28 -rwxr-xr-x.  1  501 games 26082 3月  24 2013 configure
     4 -rw-r--r--.  1 root root   3284 11月  7 12:06 configure.log
     4 drwxr-xr-x. 22  501 games  4096 4月  29 2013 contrib
    16 -rw-r--r--.  1  501 games 13174 4月  30 2012 crc32.c
    32 -rw-r--r--.  1  501 games 30562 4月  30 2012 crc32.h
    72 -rw-r--r--.  1  501 games 71476 4月  29 2013 deflate.c
    16 -rw-r--r--.  1  501 games 12774 6月   3 2012 deflate.h
     0 drwxr-xr-x.  2  501 games   104 9月  11 2011 doc
     0 drwxr-xr-x.  2  501 games   188 10月 12 2012 examples
    20 -rw-r--r--.  1  501 games 16573 11月 28 2011 FAQ
     4 -rw-r--r--.  1  501 games   678 2月  14 2010 gzclose.c
     8 -rw-r--r--.  1  501 games  6552 4月  14 2013 gzguts.h
    20 -rw-r--r--.  1  501 games 16415 3月  25 2013 gzlib.c
    20 -rw-r--r--.  1  501 games 18694 3月  25 2013 gzread.c
    16 -rw-r--r--.  1  501 games 16199 4月  14 2013 gzwrite.c
     4 -rw-r--r--.  1  501 games  1988 3月  12 2012 INDEX
    24 -rw-r--r--.  1  501 games 22709 8月  13 2012 infback.c
    16 -rw-r--r--.  1  501 games 13455 3月  25 2013 inffast.c
     4 -rw-r--r--.  1  501 games   427 4月  19 2010 inffast.h
     8 -rw-r--r--.  1  501 games  6332 10月  6 2011 inffixed.h
    56 -rw-r--r--.  1  501 games 53512 8月  13 2012 inflate.c
     8 -rw-r--r--.  1  501 games  6399 12月 26 2009 inflate.h
    16 -rw-r--r--.  1  501 games 13028 4月  29 2013 inftrees.c
     4 -rw-r--r--.  1  501 games  2928 4月  19 2010 inftrees.h
    12 -rw-r--r--.  1  501 games  9132 11月  7 12:06 Makefile
    12 -rw-r--r--.  1  501 games  8985 4月  29 2013 Makefile.in
    28 -rw-r--r--.  1  501 games 26402 3月  10 2012 make_vms.com
     0 drwxr-xr-x.  2  501 games   105 11月 28 2011 msdos
     0 drwxr-xr-x.  2  501 games    36 12月 21 2009 nintendods
     0 drwxr-xr-x.  3  501 games   117 3月  13 2012 old
     0 drwxr-xr-x.  2  501 games    25 4月  29 2013 qnx
     8 -rw-r--r--.  1  501 games  5185 4月  29 2013 README
     0 drwxr-xr-x.  2  501 games    59 8月  13 2012 test
     4 -rw-r--r--.  1  501 games  3135 4月  29 2013 treebuild.xml
    44 -rw-r--r--.  1  501 games 44255 8月  13 2012 trees.c
    12 -rw-r--r--.  1  501 games  8472 4月  19 2010 trees.h
     4 -rw-r--r--.  1  501 games  2003 8月  13 2012 uncompr.c
     0 drwxr-xr-x.  2  501 games    46 2月  14 2010 watcom
     0 drwxr-xr-x.  2  501 games   160 4月  29 2013 win32
    16 -rw-r--r--.  1 root root  15472 11月  7 12:06 zconf.h
    16 -rw-r--r--.  1  501 games 15559 4月  29 2013 zconf.h.cmakein
    16 -rw-r--r--.  1  501 games 15508 4月  29 2013 zconf.h.in
     4 -rwxr-xr-x.  1  501 games  3895 10月 15 2006 zlib2ansi
     8 -rw-r--r--.  1  501 games  4236 4月  29 2013 zlib.3
    12 -rw-r--r--.  1  501 games  8734 4月  29 2013 zlib.3.pdf
    88 -rw-r--r--.  1  501 games 87883 4月  29 2013 zlib.h
     4 -rw-r--r--.  1  501 games  1192 3月  24 2013 zlib.map
     4 -rw-r--r--.  1 root root    258 11月  7 12:06 zlib.pc
     4 -rw-r--r--.  1  501 games   294 3月  12 2012 zlib.pc.cmakein
     4 -rw-r--r--.  1  501 games   254 4月  18 2010 zlib.pc.in
     8 -rw-r--r--.  1  501 games  7414 8月  13 2012 zutil.c
     8 -rw-r--r--.  1  501 games  6766 3月  25 2013 zutil.h
    [root@bogon zlib-1.2.8]# make install
    gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o adler32.o adler32.c
    gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o crc32.o crc32.c
    gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o deflate.o deflate.c
    gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o infback.o infback.c
    gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o inffast.o inffast.c
    gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o inflate.o inflate.c
    gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o inftrees.o inftrees.c
    gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o trees.o trees.c
    gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o zutil.o zutil.c
    gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o compress.o compress.c
    gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o uncompr.o uncompr.c
    gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o gzclose.o gzclose.c
    gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o gzlib.o gzlib.c
    gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o gzread.o gzread.c
    gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o gzwrite.o gzwrite.c
    ar rc libz.a adler32.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o zutil.o compress.o uncompr.o gzclose.o gzlib.o gzread.o gzwrite.o
    gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/adler32.o adler32.c
    gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/crc32.o crc32.c
    gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/deflate.o deflate.c
    gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/infback.o infback.c
    gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/inffast.o inffast.c
    gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/inflate.o inflate.c
    gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/inftrees.o inftrees.c
    gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/trees.o trees.c
    gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/zutil.o zutil.c
    gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/compress.o compress.c
    gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/uncompr.o uncompr.c
    gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzclose.o gzclose.c
    gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzlib.o gzlib.c
    gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzread.o gzread.c
    gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzwrite.o gzwrite.c
    gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o libz.so.1.2.8 adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo  -lc
    rm -f libz.so libz.so.1
    ln -s libz.so.1.2.8 libz.so
    ln -s libz.so.1.2.8 libz.so.1
    cp libz.a /usr/local/lib
    chmod 644 /usr/local/lib/libz.a
    cp libz.so.1.2.8 /usr/local/lib
    chmod 755 /usr/local/lib/libz.so.1.2.8
    cp zlib.3 /usr/local/share/man/man3
    chmod 644 /usr/local/share/man/man3/zlib.3
    cp zlib.pc /usr/local/lib/pkgconfig
    chmod 644 /usr/local/lib/pkgconfig/zlib.pc
    cp zlib.h zconf.h /usr/local/include
    chmod 644 /usr/local/include/zlib.h /usr/local/include/zconf.h
    [root@bogon zlib-1.2.8]# ll -as
    总用量 1380
      4 drwxr-xr-x. 14  501 games   4096 11月  7 12:07 .
      0 drwxr-xr-x.  4 root root     146 11月  7 12:06 ..
      8 -rw-r--r--.  1  501 games   4968 9月  11 2011 adler32.c
      4 -rw-r--r--.  1 root root    3160 11月  7 12:07 adler32.lo
      4 -rw-r--r--.  1 root root    3160 11月  7 12:07 adler32.o
      0 drwxr-xr-x.  2  501 games     46 2月  14 2010 amiga
      0 drwxr-xr-x.  2  501 games     73 4月  29 2013 as400
     76 -rw-r--r--.  1  501 games  76402 4月  29 2013 ChangeLog
      8 -rw-r--r--.  1  501 games   8098 4月  29 2013 CMakeLists.txt
      4 -rw-r--r--.  1  501 games   2529 8月  13 2012 compress.c
      4 -rw-r--r--.  1 root root    2160 11月  7 12:07 compress.lo
      4 -rw-r--r--.  1 root root    2368 11月  7 12:07 compress.o
     28 -rwxr-xr-x.  1  501 games  26082 3月  24 2013 configure
      4 -rw-r--r--.  1 root root    3284 11月  7 12:06 configure.log
      4 drwxr-xr-x. 22  501 games   4096 4月  29 2013 contrib
     16 -rw-r--r--.  1  501 games  13174 4月  30 2012 crc32.c
     32 -rw-r--r--.  1  501 games  30562 4月  30 2012 crc32.h
     12 -rw-r--r--.  1 root root   11296 11月  7 12:07 crc32.lo
     12 -rw-r--r--.  1 root root   12168 11月  7 12:07 crc32.o
     72 -rw-r--r--.  1  501 games  71476 4月  29 2013 deflate.c
     16 -rw-r--r--.  1  501 games  12774 6月   3 2012 deflate.h
     24 -rw-r--r--.  1 root root   22696 11月  7 12:07 deflate.lo
     24 -rw-r--r--.  1 root root   24536 11月  7 12:07 deflate.o
      0 drwxr-xr-x.  2  501 games    104 9月  11 2011 doc
      0 drwxr-xr-x.  2  501 games    188 10月 12 2012 examples
     20 -rw-r--r--.  1  501 games  16573 11月 28 2011 FAQ
      4 -rw-r--r--.  1  501 games    678 2月  14 2010 gzclose.c
      4 -rw-r--r--.  1 root root    1488 11月  7 12:07 gzclose.lo
      4 -rw-r--r--.  1 root root    1440 11月  7 12:07 gzclose.o
      8 -rw-r--r--.  1  501 games   6552 4月  14 2013 gzguts.h
     20 -rw-r--r--.  1  501 games  16415 3月  25 2013 gzlib.c
     12 -rw-r--r--.  1 root root    9304 11月  7 12:07 gzlib.lo
     12 -rw-r--r--.  1 root root   10376 11月  7 12:07 gzlib.o
     20 -rw-r--r--.  1  501 games  18694 3月  25 2013 gzread.c
      8 -rw-r--r--.  1 root root    8160 11月  7 12:07 gzread.lo
      8 -rw-r--r--.  1 root root    8040 11月  7 12:07 gzread.o
     16 -rw-r--r--.  1  501 games  16199 4月  14 2013 gzwrite.c
     12 -rw-r--r--.  1 root root   12184 11月  7 12:07 gzwrite.lo
     16 -rw-r--r--.  1 root root   14632 11月  7 12:07 gzwrite.o
      4 -rw-r--r--.  1  501 games   1988 3月  12 2012 INDEX
     24 -rw-r--r--.  1  501 games  22709 8月  13 2012 infback.c
     12 -rw-r--r--.  1 root root   12032 11月  7 12:07 infback.lo
     12 -rw-r--r--.  1 root root   11552 11月  7 12:07 infback.o
     16 -rw-r--r--.  1  501 games  13455 3月  25 2013 inffast.c
      4 -rw-r--r--.  1  501 games    427 4月  19 2010 inffast.h
      8 -rw-r--r--.  1 root root    4744 11月  7 12:07 inffast.lo
      8 -rw-r--r--.  1 root root    4648 11月  7 12:07 inffast.o
      8 -rw-r--r--.  1  501 games   6332 10月  6 2011 inffixed.h
     56 -rw-r--r--.  1  501 games  53512 8月  13 2012 inflate.c
      8 -rw-r--r--.  1  501 games   6399 12月 26 2009 inflate.h
     24 -rw-r--r--.  1 root root   21536 11月  7 12:07 inflate.lo
     24 -rw-r--r--.  1 root root   21952 11月  7 12:07 inflate.o
     16 -rw-r--r--.  1  501 games  13028 4月  29 2013 inftrees.c
      4 -rw-r--r--.  1  501 games   2928 4月  19 2010 inftrees.h
      8 -rw-r--r--.  1 root root    4832 11月  7 12:07 inftrees.lo
      8 -rw-r--r--.  1 root root    4800 11月  7 12:07 inftrees.o
    140 -rw-r--r--.  1 root root  142230 11月  7 12:07 libz.a
      0 lrwxrwxrwx.  1 root root      13 11月  7 12:07 libz.so -> libz.so.1.2.8
      0 lrwxrwxrwx.  1 root root      13 11月  7 12:07 libz.so.1 -> libz.so.1.2.8
    108 -rwxr-xr-x.  1 root root  109184 11月  7 12:07 libz.so.1.2.8
     12 -rw-r--r--.  1  501 games   9132 11月  7 12:06 Makefile
     12 -rw-r--r--.  1  501 games   8985 4月  29 2013 Makefile.in
     28 -rw-r--r--.  1  501 games  26402 3月  10 2012 make_vms.com
      0 drwxr-xr-x.  2  501 games    105 11月 28 2011 msdos
      0 drwxr-xr-x.  2  501 games     36 12月 21 2009 nintendods
      0 drwxr-xr-x.  3  501 games    117 3月  13 2012 old
      0 drwxr-xr-x.  2  501 games     25 4月  29 2013 qnx
      8 -rw-r--r--.  1  501 games   5185 4月  29 2013 README
      0 drwxr-xr-x.  2  501 games     59 8月  13 2012 test
      4 -rw-r--r--.  1  501 games   3135 4月  29 2013 treebuild.xml
     44 -rw-r--r--.  1  501 games  44255 8月  13 2012 trees.c
     12 -rw-r--r--.  1  501 games   8472 4月  19 2010 trees.h
     16 -rw-r--r--.  1 root root   15808 11月  7 12:07 trees.lo
     16 -rw-r--r--.  1 root root   15672 11月  7 12:07 trees.o
      4 -rw-r--r--.  1  501 games   2003 8月  13 2012 uncompr.c
      4 -rw-r--r--.  1 root root    1960 11月  7 12:07 uncompr.lo
      4 -rw-r--r--.  1 root root    1856 11月  7 12:07 uncompr.o
      0 drwxr-xr-x.  2  501 games     46 2月  14 2010 watcom
      0 drwxr-xr-x.  2  501 games    160 4月  29 2013 win32
     16 -rw-r--r--.  1 root root   15472 11月  7 12:06 zconf.h
     16 -rw-r--r--.  1  501 games  15559 4月  29 2013 zconf.h.cmakein
     16 -rw-r--r--.  1  501 games  15508 4月  29 2013 zconf.h.in
      4 -rwxr-xr-x.  1  501 games   3895 10月 15 2006 zlib2ansi
      8 -rw-r--r--.  1  501 games   4236 4月  29 2013 zlib.3
     12 -rw-r--r--.  1  501 games   8734 4月  29 2013 zlib.3.pdf
     88 -rw-r--r--.  1  501 games  87883 4月  29 2013 zlib.h
      4 -rw-r--r--.  1  501 games   1192 3月  24 2013 zlib.map
      4 -rw-r--r--.  1 root root     258 11月  7 12:06 zlib.pc
      4 -rw-r--r--.  1  501 games    294 3月  12 2012 zlib.pc.cmakein
      4 -rw-r--r--.  1  501 games    254 4月  18 2010 zlib.pc.in
      8 -rw-r--r--.  1  501 games   7414 8月  13 2012 zutil.c
      8 -rw-r--r--.  1  501 games   6766 3月  25 2013 zutil.h
      4 -rw-r--r--.  1 root root    2672 11月  7 12:07 zutil.lo
      4 -rw-r--r--.  1 root root    2592 11月  7 12:07 zutil.o
    [root@bogon zlib-1.2.8]# make clean
    rm -f *.o *.lo *~ 
       example minigzip examplesh minigzipsh 
       example64 minigzip64 
       infcover 
       libz.* foo.gz so_locations 
       _match.s maketree contrib/infback9/*.o
    rm -rf objs
    rm -f *.gcda *.gcno *.gcov
    rm -f contrib/infback9/*.gcda contrib/infback9/*.gcno contrib/infback9/*.gcov
    [root@bogon zlib-1.2.8]# ll -as
    总用量 816
     4 drwxr-xr-x. 14  501 games  4096 11月  7 12:07 .
     0 drwxr-xr-x.  4 root root    146 11月  7 12:06 ..
     8 -rw-r--r--.  1  501 games  4968 9月  11 2011 adler32.c
     0 drwxr-xr-x.  2  501 games    46 2月  14 2010 amiga
     0 drwxr-xr-x.  2  501 games    73 4月  29 2013 as400
    76 -rw-r--r--.  1  501 games 76402 4月  29 2013 ChangeLog
     8 -rw-r--r--.  1  501 games  8098 4月  29 2013 CMakeLists.txt
     4 -rw-r--r--.  1  501 games  2529 8月  13 2012 compress.c
    28 -rwxr-xr-x.  1  501 games 26082 3月  24 2013 configure
     4 -rw-r--r--.  1 root root   3284 11月  7 12:06 configure.log
     4 drwxr-xr-x. 22  501 games  4096 4月  29 2013 contrib
    16 -rw-r--r--.  1  501 games 13174 4月  30 2012 crc32.c
    32 -rw-r--r--.  1  501 games 30562 4月  30 2012 crc32.h
    72 -rw-r--r--.  1  501 games 71476 4月  29 2013 deflate.c
    16 -rw-r--r--.  1  501 games 12774 6月   3 2012 deflate.h
     0 drwxr-xr-x.  2  501 games   104 9月  11 2011 doc
     0 drwxr-xr-x.  2  501 games   188 10月 12 2012 examples
    20 -rw-r--r--.  1  501 games 16573 11月 28 2011 FAQ
     4 -rw-r--r--.  1  501 games   678 2月  14 2010 gzclose.c
     8 -rw-r--r--.  1  501 games  6552 4月  14 2013 gzguts.h
    20 -rw-r--r--.  1  501 games 16415 3月  25 2013 gzlib.c
    20 -rw-r--r--.  1  501 games 18694 3月  25 2013 gzread.c
    16 -rw-r--r--.  1  501 games 16199 4月  14 2013 gzwrite.c
     4 -rw-r--r--.  1  501 games  1988 3月  12 2012 INDEX
    24 -rw-r--r--.  1  501 games 22709 8月  13 2012 infback.c
    16 -rw-r--r--.  1  501 games 13455 3月  25 2013 inffast.c
     4 -rw-r--r--.  1  501 games   427 4月  19 2010 inffast.h
     8 -rw-r--r--.  1  501 games  6332 10月  6 2011 inffixed.h
    56 -rw-r--r--.  1  501 games 53512 8月  13 2012 inflate.c
     8 -rw-r--r--.  1  501 games  6399 12月 26 2009 inflate.h
    16 -rw-r--r--.  1  501 games 13028 4月  29 2013 inftrees.c
     4 -rw-r--r--.  1  501 games  2928 4月  19 2010 inftrees.h
    12 -rw-r--r--.  1  501 games  9132 11月  7 12:06 Makefile
    12 -rw-r--r--.  1  501 games  8985 4月  29 2013 Makefile.in
    28 -rw-r--r--.  1  501 games 26402 3月  10 2012 make_vms.com
     0 drwxr-xr-x.  2  501 games   105 11月 28 2011 msdos
     0 drwxr-xr-x.  2  501 games    36 12月 21 2009 nintendods
     0 drwxr-xr-x.  3  501 games   117 3月  13 2012 old
     0 drwxr-xr-x.  2  501 games    25 4月  29 2013 qnx
     8 -rw-r--r--.  1  501 games  5185 4月  29 2013 README
     0 drwxr-xr-x.  2  501 games    59 8月  13 2012 test
     4 -rw-r--r--.  1  501 games  3135 4月  29 2013 treebuild.xml
    44 -rw-r--r--.  1  501 games 44255 8月  13 2012 trees.c
    12 -rw-r--r--.  1  501 games  8472 4月  19 2010 trees.h
     4 -rw-r--r--.  1  501 games  2003 8月  13 2012 uncompr.c
     0 drwxr-xr-x.  2  501 games    46 2月  14 2010 watcom
     0 drwxr-xr-x.  2  501 games   160 4月  29 2013 win32
    16 -rw-r--r--.  1 root root  15472 11月  7 12:06 zconf.h
    16 -rw-r--r--.  1  501 games 15559 4月  29 2013 zconf.h.cmakein
    16 -rw-r--r--.  1  501 games 15508 4月  29 2013 zconf.h.in
     4 -rwxr-xr-x.  1  501 games  3895 10月 15 2006 zlib2ansi
     8 -rw-r--r--.  1  501 games  4236 4月  29 2013 zlib.3
    12 -rw-r--r--.  1  501 games  8734 4月  29 2013 zlib.3.pdf
    88 -rw-r--r--.  1  501 games 87883 4月  29 2013 zlib.h
     4 -rw-r--r--.  1  501 games  1192 3月  24 2013 zlib.map
     4 -rw-r--r--.  1 root root    258 11月  7 12:06 zlib.pc
     4 -rw-r--r--.  1  501 games   294 3月  12 2012 zlib.pc.cmakein
     4 -rw-r--r--.  1  501 games   254 4月  18 2010 zlib.pc.in
     8 -rw-r--r--.  1  501 games  7414 8月  13 2012 zutil.c
     8 -rw-r--r--.  1  501 games  6766 3月  25 2013 zutil.h
    [root@bogon zlib-1.2.8]#
    

      

    Makefile python源码安装

    ./configure

    生成 Makefile

    # Declare targets that aren't real files
    .PHONY: all build_all sharedmods check-clean-src oldsharedmods test quicktest
    .PHONY: install altinstall oldsharedinstall bininstall altbininstall
    .PHONY: maninstall libinstall inclinstall libainstall sharedinstall
    .PHONY: frameworkinstall frameworkinstallframework frameworkinstallstructure
    .PHONY: frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools
    .PHONY: frameworkaltinstallunixtools recheck clean clobber distclean
    .PHONY: smelly funny patchcheck touch altmaninstall commoninstall
    .PHONY: gdbhooks

    https://zh.wikipedia.org/wiki/Make

    示例

    举例来说明makefile的结构和make如何运作。

    editor: main.o text.o
    	gcc -o editor main.o text.o
    main.o: main.c def.h
    	gcc -c main.c
    text.o: text.c com.h
    	gcc -c text.c
    install:editor
    	mv editor /usr/local
    

    当我们输入:

    make
    或者
    make editor
    

    当editor这个target文件不存在,或者main.o、text.o这两个依赖文件被修改,都会导致make调用其下的命令“gcc -o editor main.o text.o”;接下来,由于引用到main.o和text.o,make会检查main.o的依赖main.c、def.h有无更新,如果有,则执行其下的命令“gcc -c main.c”;同样的道理,也适用于text.o。 于是,可有几种不同的输出:

    • 第一次运行:
    gcc -c main.c
    gcc -c text.c
    gcc -o editor main.o text.o
    
    • main.c或/和def.h有修改:
    gcc -c main.c
    gcc -o editor main.o text.o
    
    • text.c或/和com.h有修改:
    gcc -c text.c
    gcc -o editor main.o text.o
    
    • main.c和text.c均有修改:
    gcc -c main.c
    gcc -c text.c
    gcc -o editor main.o text.o
    

    当我们输入:

    make install
    

    make会检查install的依赖editor是否是最新,如果是,则执行其下的命令“mv editor /usr/local”。由于这个过程并没有产生名为“install”的文件,所以,install是一个假目标。

    make clean

    32 -rw-r--r-- 1 501 test 30217 Dec 24 2018 weakrefobject.c
    104 -rw-r--r-- 1 root root 103816 Oct 30 17:29 weakrefobject.o
    [root@gateway Python-3.6.8]# pwd
    /root/test/Python-3.6.8
    [root@gateway Python-3.6.8]# make clean
    find . -depth -name '__pycache__' -exec rm -rf {} ';'
    find . -name '*.py[co]' -exec rm -f {} ';'
    find . -name '*.[oa]' -exec rm -f {} ';'
    find . -name '*.s[ol]' -exec rm -f {} ';'
    find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
    find build -name 'fficonfig.h' -exec rm -f {} ';' || true
    find build -name '*.py' -exec rm -f {} ';' || true
    find build -name '*.py[co]' -exec rm -f {} ';' || true
    rm -f pybuilddir.txt
    rm -f Lib/lib2to3/*Grammar*.pickle
    rm -f Programs/_testembed Programs/_freeze_importlib
    find build -type f -a ! -name '*.gc??' -exec rm -f {} ';'
    rm -f Include/pydtrace_probes.h
    [root@gateway Python-3.6.8]#

    460 -rw-r--r-- 1 501 test 468509 Dec 24 2018 unicodeobject.c
    236 -rw-r--r-- 1 501 test 239714 Dec 24 2018 unicodetype_db.h
    32 -rw-r--r-- 1 501 test 30217 Dec 24 2018 weakrefobject.c
    [root@gateway Python-3.6.8]# ll -as Objects/

    make clean 的逻辑也在Makefile中

    clean: pycremoval
        find . -name '*.[oa]' -exec rm -f {} ';'
        find . -name '*.s[ol]' -exec rm -f {} ';'
        find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
        find build -name 'fficonfig.h' -exec rm -f {} ';' || true
        find build -name '*.py' -exec rm -f {} ';' || true
        find build -name '*.py[co]' -exec rm -f {} ';' || true
        -rm -f pybuilddir.txt
        -rm -f Lib/lib2to3/*Grammar*.pickle
        -rm -f Programs/_testembed Programs/_freeze_importlib
        -find build -type f -a ! -name '*.gc??' -exec rm -f {} ';'
        -rm -f Include/pydtrace_probes.h

    # Generated automatically from Makefile.pre by makesetup.
    # Top-level Makefile for Python
    #
    # As distributed, this file is called Makefile.pre.in; it is processed
    # into the real Makefile by running the script ./configure, which
    # replaces things like @spam@ with values appropriate for your system.
    # This means that if you edit Makefile, your changes get lost the next
    # time you run the configure script.  Ideally, you can do:
    #
    #	./configure
    #	make
    #	make test
    #	make install
    #
    # If you have a previous version of Python installed that you don't
    # want to overwrite, you can use "make altinstall" instead of "make
    # install".  Refer to the "Installing" section in the README file for
    # additional details.
    #
    # See also the section "Build instructions" in the README file.
    
    # === Variables set by makesetup ===
    
    MODNAMES=        _thread posix errno pwd _sre _codecs _weakref _functools _operator _collections itertools atexit _signal _stat time _locale _io zipimport faulthandler _tracemalloc _symtable xxsubtype
    MODOBJS=          Modules/_threadmodule.o  Modules/posixmodule.o  Modules/errnomodule.o  Modules/pwdmodule.o  Modules/_sre.o  Modules/_codecsmodule.o  Modules/_weakref.o  Modules/_functoolsmodule.o  Modules/_operator.o  Modules/_collectionsmodule.o  Modules/itertoolsmodule.o  Modules/atexitmodule.o  Modules/signalmodule.o  Modules/_stat.o  Modules/timemodule.o  Modules/_localemodule.o  Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o  Modules/zipimport.o  Modules/faulthandler.o  Modules/_tracemalloc.o Modules/hashtable.o  Modules/symtablemodule.o  Modules/xxsubtype.o
    MODLIBS=        $(LOCALMODLIBS) $(BASEMODLIBS)
    
    # === Variables set by configure
    VERSION=	3.6
    srcdir=		.
    
    abs_srcdir=	/root/test/Python-3.6.8
    abs_builddir=	/root/test/Python-3.6.8
    
    
    CC=		gcc -pthread
    CXX=		g++
    MAINCC=		$(CC)
    LINKCC=		$(PURIFY) $(MAINCC)
    AR=		ar
    READELF=	readelf
    SOABI=		cpython-36m-x86_64-linux-gnu
    LDVERSION=	$(VERSION)$(ABIFLAGS)
    GITVERSION=	
    GITTAG=		
    GITBRANCH=	
    PGO_PROF_GEN_FLAG=-fprofile-generate
    PGO_PROF_USE_FLAG=-fprofile-use -fprofile-correction
    LLVM_PROF_MERGER=true
    LLVM_PROF_FILE=
    LLVM_PROF_ERR=no
    DTRACE=         
    DFLAGS=         
    DTRACE_HEADERS= 
    DTRACE_OBJS=    
    
    GNULD=		yes
    
    # Shell used by make (some versions default to the login shell, which is bad)
    SHELL=		/bin/sh
    
    # Use this to make a link between python$(VERSION) and python in $(BINDIR)
    LN=		ln
    
    # Portable install script (configure doesn't always guess right)
    INSTALL=	/usr/bin/install -c
    INSTALL_PROGRAM=${INSTALL}
    INSTALL_SCRIPT= ${INSTALL}
    INSTALL_DATA=	${INSTALL} -m 644
    # Shared libraries must be installed with executable mode on some systems;
    # rather than figuring out exactly which, we always give them executable mode.
    # Also, making them read-only seems to be a good idea...
    INSTALL_SHARED= ${INSTALL} -m 555
    
    MKDIR_P=	/bin/mkdir -p
    
    MAKESETUP=      $(srcdir)/Modules/makesetup
    
    # Compiler options
    OPT=		-DNDEBUG -g -fwrapv -O3 -Wall
    BASECFLAGS=	 -Wsign-compare
    BASECPPFLAGS=	
    CONFIGURE_CFLAGS=	
    # CFLAGS_NODIST is used for building the interpreter and stdlib C extensions.
    # Use it when a compiler flag should _not_ be part of the distutils CFLAGS
    # once Python is installed (Issue #21121).
    CONFIGURE_CFLAGS_NODIST= -std=c99 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers
    # LDFLAGS_NODIST is used in the same manner as CFLAGS_NODIST.
    # Use it when a linker flag should _not_ be part of the distutils LDFLAGS
    # once Python is installed (bpo-35257)
    CONFIGURE_LDFLAGS_NODIST=
    CONFIGURE_CPPFLAGS=	
    CONFIGURE_LDFLAGS=	
    # Avoid assigning CFLAGS, LDFLAGS, etc. so users can use them on the
    # command line to append to these values without stomping the pre-set
    # values.
    PY_CFLAGS=	$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
    PY_CFLAGS_NODIST=$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST)
    # Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to
    # be able to build extension modules using the directories specified in the
    # environment variables
    PY_CPPFLAGS=	$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)
    PY_LDFLAGS=	$(CONFIGURE_LDFLAGS) $(LDFLAGS)
    PY_LDFLAGS_NODIST=$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)
    NO_AS_NEEDED=	-Wl,--no-as-needed
    LDLAST=		
    SGI_ABI=	
    CCSHARED=	-fPIC
    LINKFORSHARED=	-Xlinker -export-dynamic
    ARFLAGS=	rcs
    # Extra C flags added for building the interpreter object files.
    CFLAGSFORSHARED=
    # C flags used for building the interpreter object files
    PY_CORE_CFLAGS=	$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED) -DPy_BUILD_CORE
    # Linker flags used for building the interpreter object files
    PY_CORE_LDFLAGS=$(PY_LDFLAGS) $(PY_LDFLAGS_NODIST)
    # Strict or non-strict aliasing flags used to compile dtoa.c, see above
    CFLAGS_ALIASING=
    
    
    # Machine-dependent subdirectories
    MACHDEP=	linux
    
    # Multiarch directory (may be empty)
    MULTIARCH=	x86_64-linux-gnu
    MULTIARCH_CPPFLAGS = -DMULTIARCH="x86_64-linux-gnu"
    
    # Install prefix for architecture-independent files
    prefix=		/usr/local
    
    # Install prefix for architecture-dependent files
    exec_prefix=	${prefix}
    
    # Install prefix for data files
    datarootdir=    ${prefix}/share
    
    # Expanded directories
    BINDIR=		${exec_prefix}/bin
    LIBDIR=		${exec_prefix}/lib
    MANDIR=		${datarootdir}/man
    INCLUDEDIR=	${prefix}/include
    CONFINCLUDEDIR=	$(exec_prefix)/include
    SCRIPTDIR=	$(prefix)/lib
    ABIFLAGS=	m
    
    # Detailed destination directories
    BINLIBDEST=	$(LIBDIR)/python$(VERSION)
    LIBDEST=	$(SCRIPTDIR)/python$(VERSION)
    INCLUDEPY=	$(INCLUDEDIR)/python$(LDVERSION)
    CONFINCLUDEPY=	$(CONFINCLUDEDIR)/python$(LDVERSION)
    
    # Symbols used for using shared libraries
    SHLIB_SUFFIX=	.so
    EXT_SUFFIX=	.cpython-36m-x86_64-linux-gnu.so
    LDSHARED=	$(CC) -shared $(PY_LDFLAGS)
    BLDSHARED=	$(CC) -shared $(PY_CORE_LDFLAGS)
    LDCXXSHARED=	$(CXX) -shared
    DESTSHARED=	$(BINLIBDEST)/lib-dynload
    
    # Executable suffix (.exe on Windows and Mac OS X)
    EXE=		
    BUILDEXE=	
    
    # Short name and location for Mac OS X Python framework
    UNIVERSALSDK=
    PYTHONFRAMEWORK=	
    PYTHONFRAMEWORKDIR=	no-framework
    PYTHONFRAMEWORKPREFIX=	
    PYTHONFRAMEWORKINSTALLDIR= 
    # Deployment target selected during configure, to be checked
    # by distutils. The export statement is needed to ensure that the
    # deployment target is active during build.
    MACOSX_DEPLOYMENT_TARGET=
    #export MACOSX_DEPLOYMENT_TARGET
    
    # Option to install to strip binaries
    STRIPFLAG=-s
    
    # Flags to lipo to produce a 32-bit-only universal executable
    LIPO_32BIT_FLAGS=
    
    # Options to enable prebinding (for fast startup prior to Mac OS X 10.3)
    OTHER_LIBTOOL_OPT=
    
    # Environment to run shared python without installed libraries
    RUNSHARED=       
    
    # ensurepip options
    ENSUREPIP=      upgrade
    
    # Modes for directories, executables and data files created by the
    # install process.  Default to user-only-writable for all file types.
    DIRMODE=	755
    EXEMODE=	755
    FILEMODE=	644
    
    # configure script arguments
    CONFIG_ARGS=	
    
    
    # Subdirectories with code
    SRCDIRS= 	Parser Objects Python Modules Programs
    
    # Other subdirectories
    SUBDIRSTOO=	Include Lib Misc
    
    # Files and directories to be distributed
    CONFIGFILES=	configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in
    DISTFILES=	README ChangeLog $(CONFIGFILES)
    DISTDIRS=	$(SUBDIRS) $(SUBDIRSTOO) Ext-dummy
    DIST=		$(DISTFILES) $(DISTDIRS)
    
    
    LIBRARY=	libpython$(VERSION)$(ABIFLAGS).a
    LDLIBRARY=      libpython$(VERSION)$(ABIFLAGS).a
    BLDLIBRARY=     $(LDLIBRARY)
    PY3LIBRARY=     
    DLLLIBRARY=	
    LDLIBRARYDIR=   
    INSTSONAME=	$(LDLIBRARY)
    
    
    LIBS=		-lpthread -ldl  -lutil -lrt
    LIBM=		-lm
    LIBC=		
    SYSLIBS=	$(LIBM) $(LIBC)
    SHLIBS=		$(LIBS)
    
    THREADOBJ=	Python/thread.o
    DLINCLDIR=	.
    DYNLOADFILE=	dynload_shlib.o
    MACHDEP_OBJS=	
    LIBOBJDIR=	Python/
    LIBOBJS=	
    
    PYTHON=		python$(EXE)
    BUILDPYTHON=	python$(BUILDEXE)
    
    PYTHON_FOR_REGEN=python
    UPDATE_FILE=python $(srcdir)/Tools/scripts/update_file.py
    PYTHON_FOR_BUILD=./$(BUILDPYTHON) -E
    _PYTHON_HOST_PLATFORM=
    BUILD_GNU_TYPE=	x86_64-pc-linux-gnu
    HOST_GNU_TYPE=	x86_64-pc-linux-gnu
    
    # Tcl and Tk config info from --with-tcltk-includes and -libs options
    TCLTK_INCLUDES=	
    TCLTK_LIBS=	
    
    # The task to run while instrumented when building the profile-opt target.
    # We exclude unittests with -x that take a rediculious amount of time to
    # run in the instrumented training build or do not provide much value.
    PROFILE_TASK=-m test.regrtest --pgo
    
    # report files for gcov / lcov coverage report
    COVERAGE_INFO=	$(abs_builddir)/coverage.info
    COVERAGE_REPORT=$(abs_builddir)/lcov-report
    COVERAGE_REPORT_OPTIONS=--no-branch-coverage --title "CPython lcov report"
    
    
    # === Definitions added by makesetup ===
    
    LOCALMODLIBS=                      
    BASEMODLIBS=
    PYTHONPATH=$(COREPYTHONPATH)
    COREPYTHONPATH=$(DESTPATH)$(SITEPATH)$(TESTPATH)$(MACHDEPPATH)$(EXTRAMACHDEPPATH)
    EXTRAMACHDEPPATH=
    MACHDEPPATH=:$(PLATDIR)
    TESTPATH=
    SITEPATH=
    DESTPATH=
    MACHDESTLIB=$(BINLIBDEST)
    DESTLIB=$(LIBDEST)
    
    
    
    ##########################################################################
    # Modules
    MODULE_OBJS=	
    		Modules/config.o 
    		Modules/getpath.o 
    		Modules/main.o 
    		Modules/gcmodule.o
    
    IO_H=		Modules/_io/_iomodule.h
    
    IO_OBJS=	
    		Modules/_io/_iomodule.o 
    		Modules/_io/iobase.o 
    		Modules/_io/fileio.o 
    		Modules/_io/bufferedio.o 
    		Modules/_io/textio.o 
    		Modules/_io/bytesio.o 
    		Modules/_io/stringio.o
    
    ##########################################################################
    
    LIBFFI_INCLUDEDIR=	
    
    ##########################################################################
    # Parser
    PGEN=		Parser/pgen$(EXE)
    
    POBJS=		
    		Parser/acceler.o 
    		Parser/grammar1.o 
    		Parser/listnode.o 
    		Parser/node.o 
    		Parser/parser.o 
    		Parser/bitset.o 
    		Parser/metagrammar.o 
    		Parser/firstsets.o 
    		Parser/grammar.o 
    		Parser/pgen.o
    
    PARSER_OBJS=	$(POBJS) Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o
    
    PGOBJS=		
    		Objects/obmalloc.o 
    		Python/dynamic_annotations.o 
    		Python/mysnprintf.o 
    		Python/pyctype.o 
    		Parser/tokenizer_pgen.o 
    		Parser/printgrammar.o 
    		Parser/parsetok_pgen.o 
    		Parser/pgenmain.o
    
    PARSER_HEADERS= 
    		$(srcdir)/Parser/parser.h 
    		$(srcdir)/Include/parsetok.h 
    		$(srcdir)/Parser/tokenizer.h
    
    PGENOBJS=	$(POBJS) $(PGOBJS)
    
    ##########################################################################
    # Python
    
    PYTHON_OBJS=	
    		Python/_warnings.o 
    		Python/Python-ast.o 
    		Python/asdl.o 
    		Python/ast.o 
    		Python/bltinmodule.o 
    		Python/ceval.o 
    		Python/compile.o 
    		Python/codecs.o 
    		Python/dynamic_annotations.o 
    		Python/errors.o 
    		Python/frozenmain.o 
    		Python/future.o 
    		Python/getargs.o 
    		Python/getcompiler.o 
    		Python/getcopyright.o 
    		Python/getplatform.o 
    		Python/getversion.o 
    		Python/graminit.o 
    		Python/import.o 
    		Python/importdl.o 
    		Python/marshal.o 
    		Python/modsupport.o 
    		Python/mystrtoul.o 
    		Python/mysnprintf.o 
    		Python/peephole.o 
    		Python/pyarena.o 
    		Python/pyctype.o 
    		Python/pyfpe.o 
    		Python/pyhash.o 
    		Python/pylifecycle.o 
    		Python/pymath.o 
    		Python/pystate.o 
    		Python/pythonrun.o 
    		Python/pytime.o 
    		Python/random.o 
    		Python/structmember.o 
    		Python/symtable.o 
    		Python/sysmodule.o 
    		Python/traceback.o 
    		Python/getopt.o 
    		Python/pystrcmp.o 
    		Python/pystrtod.o 
    		Python/pystrhex.o 
    		Python/dtoa.o 
    		Python/formatter_unicode.o 
    		Python/fileutils.o 
    		Python/$(DYNLOADFILE) 
    		$(LIBOBJS) 
    		$(MACHDEP_OBJS) 
    		$(THREADOBJ) 
    		$(DTRACE_OBJS)
    
    
    ##########################################################################
    # Objects
    OBJECT_OBJS=	
    		Objects/abstract.o 
    		Objects/accu.o 
    		Objects/boolobject.o 
    		Objects/bytes_methods.o 
    		Objects/bytearrayobject.o 
    		Objects/bytesobject.o 
    		Objects/cellobject.o 
    		Objects/classobject.o 
    		Objects/codeobject.o 
    		Objects/complexobject.o 
    		Objects/descrobject.o 
    		Objects/enumobject.o 
    		Objects/exceptions.o 
    		Objects/genobject.o 
    		Objects/fileobject.o 
    		Objects/floatobject.o 
    		Objects/frameobject.o 
    		Objects/funcobject.o 
    		Objects/iterobject.o 
    		Objects/listobject.o 
    		Objects/longobject.o 
    		Objects/dictobject.o 
    		Objects/odictobject.o 
    		Objects/memoryobject.o 
    		Objects/methodobject.o 
    		Objects/moduleobject.o 
    		Objects/namespaceobject.o 
    		Objects/object.o 
    		Objects/obmalloc.o 
    		Objects/capsule.o 
    		Objects/rangeobject.o 
    		Objects/setobject.o 
    		Objects/sliceobject.o 
    		Objects/structseq.o 
    		Objects/tupleobject.o 
    		Objects/typeobject.o 
    		Objects/unicodeobject.o 
    		Objects/unicodectype.o 
    		Objects/weakrefobject.o
    
    ##########################################################################
    # objects that get linked into the Python library
    LIBRARY_OBJS_OMIT_FROZEN=	
    		Modules/getbuildinfo.o 
    		$(PARSER_OBJS) 
    		$(OBJECT_OBJS) 
    		$(PYTHON_OBJS) 
    		$(MODULE_OBJS) 
    		$(MODOBJS)
    
    LIBRARY_OBJS=	
    		$(LIBRARY_OBJS_OMIT_FROZEN) 
    		Python/frozen.o
    
    ##########################################################################
    # DTrace
    
    # On some systems, object files that reference DTrace probes need to be modified
    # in-place by dtrace(1).
    DTRACE_DEPS = 
    	Python/ceval.o
    # XXX: should gcmodule, etc. be here, too?
    
    #########################################################################
    # Rules
    
    # Default target
    all:		build_all
    build_all:	check-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks 
    		Programs/_testembed python-config
    
    # Check that the source is clean when building out of source.
    check-clean-src:
    	@if test -n "$(VPATH)" -a -f "$(srcdir)/Programs/python.o"; then 
    		echo "Error: The source directory ($(srcdir)) is not clean" ; 
    		echo "Building Python out of the source tree (in $(abs_builddir)) requires a clean source tree ($(abs_srcdir))" ; 
    		echo "Try to run: make -C "$(srcdir)" clean" ; 
    		exit 1; 
    	fi
    
    # Compile a binary with profile guided optimization.
    profile-opt:
    	@if [ $(LLVM_PROF_ERR) = yes ]; then 
    		echo "Error: Cannot perform PGO build because llvm-profdata was not found in PATH" ;
    		echo "Please add it to PATH and run ./configure again" ;
    		exit 1;
    	fi
    	@echo "Building with support for profile generation:"
    	$(MAKE) clean
    	$(MAKE) profile-removal
    	$(MAKE) build_all_generate_profile
    	$(MAKE) profile-removal
    	@echo "Running code to generate profile data (this can take a while):"
    	$(MAKE) run_profile_task
    	$(MAKE) build_all_merge_profile
    	@echo "Rebuilding with profile guided optimizations:"
    	$(MAKE) clean
    	$(MAKE) build_all_use_profile
    	$(MAKE) profile-removal
    
    build_all_generate_profile:
    	$(MAKE) all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)"
    
    run_profile_task:
    	: # FIXME: can't run for a cross build
    	$(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK) || true
    
    build_all_merge_profile:
    	$(LLVM_PROF_MERGER)
    
    build_all_use_profile:
    	$(MAKE) all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_USE_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST)"
    
    # Compile and run with gcov
    .PHONY=coverage coverage-lcov coverage-report
    coverage:
    	@echo "Building with support for coverage checking:"
    	$(MAKE) clean profile-removal
    	$(MAKE) all CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov"
    
    coverage-lcov:
    	@echo "Creating Coverage HTML report with LCOV:"
    	@rm -f $(COVERAGE_INFO)
    	@rm -rf $(COVERAGE_REPORT)
    	@lcov --capture --directory $(abs_builddir) 
    	    --base-directory $(realpath $(abs_builddir)) 
    	    --path $(realpath $(abs_srcdir)) 
    	    --output-file $(COVERAGE_INFO)
    	: # remove 3rd party modules, system headers and internal files with
    	: # debug, test or dummy functions.
    	@lcov --remove $(COVERAGE_INFO) 
    	    '*/Modules/_blake2/impl/*' 
    	    '*/Modules/_ctypes/libffi*/*' 
    	    '*/Modules/_decimal/libmpdec/*' 
    	    '*/Modules/_sha3/kcp/*' 
    	    '*/Modules/expat/*' 
    	    '*/Modules/zlib/*' 
    	    '*/Include/*' 
    	    '*/Modules/xx*.c' 
    	    '*/Parser/listnode.c' 
    	    '*/Python/pyfpe.c' 
    	    '*/Python/pystrcmp.c' 
    	    '/usr/include/*' 
    	    '/usr/local/include/*' 
    	    '/usr/lib/gcc/*' 
    	    --output-file $(COVERAGE_INFO)
    	@genhtml $(COVERAGE_INFO) --output-directory $(COVERAGE_REPORT) 
    	    $(COVERAGE_REPORT_OPTIONS)
    	@echo
    	@echo "lcov report at $(COVERAGE_REPORT)/index.html"
    	@echo
    
    # Force regeneration of parser and importlib
    coverage-report: regen-grammar regen-importlib
    	: # force rebuilding of parser and importlib
    	@touch $(GRAMMAR_INPUT)
    	@touch $(srcdir)/Lib/importlib/_bootstrap.py
    	@touch $(srcdir)/Lib/importlib/_bootstrap_external.py
    	: # build with coverage info
    	$(MAKE) coverage
    	: # run tests, ignore failures
    	$(TESTRUNNER) $(TESTOPTS) || true
    	: # build lcov report
    	$(MAKE) coverage-lcov
    
    # Run "Argument Clinic" over all source files
    .PHONY=clinic
    clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c
    	$(PYTHON_FOR_REGEN) ./Tools/clinic/clinic.py --make
    
    # Build the interpreter
    $(BUILDPYTHON):	Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
    	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
    
    platform: $(BUILDPYTHON) pybuilddir.txt
    	$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform
    
    # Create build directory and generate the sysconfig build-time data there.
    # pybuilddir.txt contains the name of the build dir and is used for
    # sys.path fixup -- see Modules/getpath.c.
    # Since this step runs before shared modules are built, try to avoid bootstrap
    # problems by creating a dummy pybuilddir.txt just to allow interpreter
    # initialization to succeed.  It will be overwritten by generate-posix-vars
    # or removed in case of failure.
    pybuilddir.txt: $(BUILDPYTHON)
    	@echo "none" > ./pybuilddir.txt
    	$(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars ;
    	if test $$? -ne 0 ; then 
    		echo "generate-posix-vars failed" ; 
    		rm -f ./pybuilddir.txt ; 
    		exit 1 ; 
    	fi
    
    # This is shared by the math and cmath modules
    Modules/_math.o: Modules/_math.c Modules/_math.h
    	$(CC) -c $(CCSHARED) $(PY_CORE_CFLAGS) -o $@ $<
    
    # blake2s is auto-generated from blake2b
    $(srcdir)/Modules/_blake2/blake2s_impl.c: $(srcdir)/Modules/_blake2/blake2b_impl.c $(srcdir)/Modules/_blake2/blake2b2s.py
    	$(PYTHON_FOR_REGEN) $(srcdir)/Modules/_blake2/blake2b2s.py
    	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py -f $@
    
    # Build the shared modules
    # Under GNU make, MAKEFLAGS are sorted and normalized; the 's' for
    # -s, --silent or --quiet is always the first char.
    # Under BSD make, MAKEFLAGS might be " -s -v x=y".
    # Ignore macros passed by GNU make, passed after --
    sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o
    	@case "`echo X $$MAKEFLAGS | sed 's/^X //;s/ -- .*//'`" in 
    	    * -s*|s*) quiet="-q";; 
    	    *) quiet="";; 
    	esac; 
    	echo "$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' 
    		_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' 
    		$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build"; 
    	$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' 
    		_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' 
    		$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
    
    
    # Build static library
    $(LIBRARY): $(LIBRARY_OBJS)
    	-rm -f $@
    	$(AR) $(ARFLAGS) $@ $(LIBRARY_OBJS)
    
    libpython$(LDVERSION).so: $(LIBRARY_OBJS)
    	if test $(INSTSONAME) != $(LDLIBRARY); then 
    		$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); 
    		$(LN) -f $(INSTSONAME) $@; 
    	else 
    		$(BLDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); 
    	fi
    
    libpython3.so:	libpython$(LDVERSION).so
    	$(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^
    
    libpython$(LDVERSION).dylib: $(LIBRARY_OBJS)
    	 $(CC) -dynamiclib -Wl,-single_module $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); 
    
    
    libpython$(VERSION).sl: $(LIBRARY_OBJS)
    	$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST)
    
    # Copy up the gdb python hooks into a position where they can be automatically
    # loaded by gdb during Lib/test/test_gdb.py
    #
    # Distributors are likely to want to install this somewhere else e.g. relative
    # to the stripped DWARF data for the shared library.
    gdbhooks: $(BUILDPYTHON)-gdb.py
    
    SRC_GDB_HOOKS=$(srcdir)/Tools/gdb/libpython.py
    $(BUILDPYTHON)-gdb.py: $(SRC_GDB_HOOKS)
    	$(INSTALL_DATA) $(SRC_GDB_HOOKS) $(BUILDPYTHON)-gdb.py
    
    # This rule is here for OPENSTEP/Rhapsody/MacOSX. It builds a temporary
    # minimal framework (not including the Lib directory and such) in the current
    # directory.
    RESSRCDIR=Mac/Resources/framework
    $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): 
    		$(LIBRARY) 
    		$(RESSRCDIR)/Info.plist
    	$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)
    	$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib 
    		-all_load $(LIBRARY) -Wl,-single_module 
    		-install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK) 
    		-compatibility_version $(VERSION) 
    		-current_version $(VERSION) 
    		-framework CoreFoundation $(LIBS);
    	$(INSTALL) -d -m $(DIRMODE)  
    		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/English.lproj
    	$(INSTALL_DATA) $(RESSRCDIR)/Info.plist 
    		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/Info.plist
    	$(LN) -fsn $(VERSION) $(PYTHONFRAMEWORKDIR)/Versions/Current
    	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)
    	$(LN) -fsn Versions/Current/Resources $(PYTHONFRAMEWORKDIR)/Resources
    
    # This rule builds the Cygwin Python DLL and import library if configured
    # for a shared core library; otherwise, this rule is a noop.
    $(DLLLIBRARY) libpython$(VERSION).dll.a: $(LIBRARY_OBJS)
    	if test -n "$(DLLLIBRARY)"; then 
    		$(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ 
    			$(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST); 
    	else true; 
    	fi
    
    
    oldsharedmods: $(SHAREDMODS)
    
    
    Makefile Modules/config.c: Makefile.pre 
    				$(srcdir)/Modules/config.c.in 
    				$(MAKESETUP) 
    				Modules/Setup.config 
    				Modules/Setup 
    				Modules/Setup.local
    	$(SHELL) $(MAKESETUP) -c $(srcdir)/Modules/config.c.in 
    				-s Modules 
    				Modules/Setup.config 
    				Modules/Setup.local 
    				Modules/Setup
    	@mv config.c Modules
    	@echo "The Makefile was updated, you may need to re-run make."
    
    
    Modules/Setup: $(srcdir)/Modules/Setup.dist
    	@if test -f Modules/Setup; then 
    		echo "-----------------------------------------------"; 
    		echo "Modules/Setup.dist is newer than Modules/Setup;"; 
    		echo "check to make sure you have all the updates you"; 
    		echo "need in your Modules/Setup file."; 
    		echo "Usually, copying Modules/Setup.dist to Modules/Setup will work."; 
    		echo "-----------------------------------------------"; 
    	fi
    
    Programs/_testembed: Programs/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
    	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
    
    ############################################################################
    # Importlib
    
    Programs/_freeze_importlib.o: Programs/_freeze_importlib.c Makefile
    
    Programs/_freeze_importlib: Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN)
    	$(LINKCC) $(PY_CORE_LDFLAGS) -o $@ Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
    
    .PHONY: regen-importlib
    regen-importlib: Programs/_freeze_importlib
    	# Regenerate Python/importlib_external.h
    	# from Lib/importlib/_bootstrap_external.py using _freeze_importlib
    	./Programs/_freeze_importlib 
    	    $(srcdir)/Lib/importlib/_bootstrap_external.py 
    	    $(srcdir)/Python/importlib_external.h.new
    	$(UPDATE_FILE) $(srcdir)/Python/importlib_external.h $(srcdir)/Python/importlib_external.h.new
    	# Regenerate Python/importlib.h from Lib/importlib/_bootstrap.py
    	# using _freeze_importlib
    	./Programs/_freeze_importlib 
    	    $(srcdir)/Lib/importlib/_bootstrap.py 
    	    $(srcdir)/Python/importlib.h.new
    	$(UPDATE_FILE) $(srcdir)/Python/importlib.h $(srcdir)/Python/importlib.h.new
    
    
    ############################################################################
    # Regenerate all generated files
    
    regen-all: regen-opcode regen-opcode-targets regen-typeslots regen-grammar 
    	regen-ast regen-importlib clinic
    
    ############################################################################
    # Special rules for object files
    
    Modules/getbuildinfo.o: $(PARSER_OBJS) 
    		$(OBJECT_OBJS) 
    		$(PYTHON_OBJS) 
    		$(MODULE_OBJS) 
    		$(MODOBJS) 
    		$(srcdir)/Modules/getbuildinfo.c
    	$(CC) -c $(PY_CORE_CFLAGS) 
    	      -DGITVERSION=""`LC_ALL=C $(GITVERSION)`"" 
    	      -DGITTAG=""`LC_ALL=C $(GITTAG)`"" 
    	      -DGITBRANCH=""`LC_ALL=C $(GITBRANCH)`"" 
    	      -o $@ $(srcdir)/Modules/getbuildinfo.c
    
    Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile
    	$(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' 
    		-DPREFIX='"$(prefix)"' 
    		-DEXEC_PREFIX='"$(exec_prefix)"' 
    		-DVERSION='"$(VERSION)"' 
    		-DVPATH='"$(VPATH)"' 
    		-o $@ $(srcdir)/Modules/getpath.c
    
    Programs/python.o: $(srcdir)/Programs/python.c
    	$(MAINCC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/python.c
    
    Programs/_testembed.o: $(srcdir)/Programs/_testembed.c
    	$(MAINCC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/_testembed.c
    
    Modules/_sre.o: $(srcdir)/Modules/_sre.c $(srcdir)/Modules/sre.h $(srcdir)/Modules/sre_constants.h $(srcdir)/Modules/sre_lib.h
    
    Modules/posixmodule.o: $(srcdir)/Modules/posixmodule.c $(srcdir)/Modules/posixmodule.h
    
    Modules/grpmodule.o: $(srcdir)/Modules/grpmodule.c $(srcdir)/Modules/posixmodule.h
    
    Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule.h
    
    Modules/signalmodule.o: $(srcdir)/Modules/signalmodule.c $(srcdir)/Modules/posixmodule.h
    
    Python/dynload_shlib.o: $(srcdir)/Python/dynload_shlib.c Makefile
    	$(CC) -c $(PY_CORE_CFLAGS) 
    		-DSOABI='"$(SOABI)"' 
    		-o $@ $(srcdir)/Python/dynload_shlib.c
    
    Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile
    	$(CC) -c $(PY_CORE_CFLAGS) 
    		-DSHLIB_EXT='"$(EXT_SUFFIX)"' 
    		-o $@ $(srcdir)/Python/dynload_hpux.c
    
    Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile
    	$(CC) -c $(PY_CORE_CFLAGS) 
    		-DABIFLAGS='"$(ABIFLAGS)"' 
    		$(MULTIARCH_CPPFLAGS) 
    		-o $@ $(srcdir)/Python/sysmodule.c
    
    $(IO_OBJS): $(IO_H)
    
    $(PGEN): $(PGENOBJS)
    		$(CC) $(OPT) $(PY_CORE_LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
    
    .PHONY: regen-grammar
    regen-grammar: $(PGEN)
    	# Regenerate Include/graminit.h and Python/graminit.c
    	# from Grammar/Grammar using pgen
    	@$(MKDIR_P) Include
    	$(PGEN) $(srcdir)/Grammar/Grammar 
    		$(srcdir)/Include/graminit.h.new 
    		$(srcdir)/Python/graminit.c.new
    	$(UPDATE_FILE) $(srcdir)/Include/graminit.h $(srcdir)/Include/graminit.h.new
    	$(UPDATE_FILE) $(srcdir)/Python/graminit.c $(srcdir)/Python/graminit.c.new
    
    Parser/grammar.o:	$(srcdir)/Parser/grammar.c 
    				$(srcdir)/Include/token.h 
    				$(srcdir)/Include/grammar.h
    Parser/metagrammar.o:	$(srcdir)/Parser/metagrammar.c
    
    Parser/tokenizer_pgen.o:	$(srcdir)/Parser/tokenizer.c
    Parser/parsetok_pgen.o:	$(srcdir)/Parser/parsetok.c
    Parser/printgrammar.o: $(srcdir)/Parser/printgrammar.c
    
    Parser/pgenmain.o:	$(srcdir)/Include/parsetok.h
    
    .PHONY=regen-ast
    regen-ast:
    	# Regenerate Include/Python-ast.h using Parser/asdl_c.py -h
    	$(MKDIR_P) $(srcdir)/Include
    	$(PYTHON_FOR_REGEN) $(srcdir)/Parser/asdl_c.py 
    		-h $(srcdir)/Include/Python-ast.h.new 
    		$(srcdir)/Parser/Python.asdl
    	$(UPDATE_FILE) $(srcdir)/Include/Python-ast.h $(srcdir)/Include/Python-ast.h.new
    	# Regenerate Python/Python-ast.c using Parser/asdl_c.py -c
    	$(MKDIR_P) $(srcdir)/Python
    	$(PYTHON_FOR_REGEN) $(srcdir)/Parser/asdl_c.py 
    		-c $(srcdir)/Python/Python-ast.c.new 
    		$(srcdir)/Parser/Python.asdl
    	$(UPDATE_FILE) $(srcdir)/Python/Python-ast.c $(srcdir)/Python/Python-ast.c.new
    
    .PHONY: regen-opcode
    regen-opcode:
    	# Regenerate Include/opcode.h from Lib/opcode.py
    	# using Tools/scripts/generate_opcode_h.py
    	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_opcode_h.py 
    		$(srcdir)/Lib/opcode.py 
    		$(srcdir)/Include/opcode.h.new
    	$(UPDATE_FILE) $(srcdir)/Include/opcode.h $(srcdir)/Include/opcode.h.new
    
    Python/compile.o Python/symtable.o Python/ast.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h
    
    Python/getplatform.o: $(srcdir)/Python/getplatform.c
    		$(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
    
    Python/importdl.o: $(srcdir)/Python/importdl.c
    		$(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
    
    Objects/unicodectype.o:	$(srcdir)/Objects/unicodectype.c 
    				$(srcdir)/Objects/unicodetype_db.h
    
    BYTESTR_DEPS = 
    		$(srcdir)/Objects/stringlib/count.h 
    		$(srcdir)/Objects/stringlib/ctype.h 
    		$(srcdir)/Objects/stringlib/fastsearch.h 
    		$(srcdir)/Objects/stringlib/find.h 
    		$(srcdir)/Objects/stringlib/join.h 
    		$(srcdir)/Objects/stringlib/partition.h 
    		$(srcdir)/Objects/stringlib/split.h 
    		$(srcdir)/Objects/stringlib/stringdefs.h 
    		$(srcdir)/Objects/stringlib/transmogrify.h
    
    UNICODE_DEPS = 
    		$(srcdir)/Objects/stringlib/asciilib.h 
    		$(srcdir)/Objects/stringlib/codecs.h 
    		$(srcdir)/Objects/stringlib/count.h 
    		$(srcdir)/Objects/stringlib/fastsearch.h 
    		$(srcdir)/Objects/stringlib/find.h 
    		$(srcdir)/Objects/stringlib/find_max_char.h 
    		$(srcdir)/Objects/stringlib/localeutil.h 
    		$(srcdir)/Objects/stringlib/partition.h 
    		$(srcdir)/Objects/stringlib/replace.h 
    		$(srcdir)/Objects/stringlib/split.h 
    		$(srcdir)/Objects/stringlib/ucs1lib.h 
    		$(srcdir)/Objects/stringlib/ucs2lib.h 
    		$(srcdir)/Objects/stringlib/ucs4lib.h 
    		$(srcdir)/Objects/stringlib/undef.h 
    		$(srcdir)/Objects/stringlib/unicode_format.h 
    		$(srcdir)/Objects/stringlib/unicodedefs.h
    
    Objects/bytes_methods.o: $(srcdir)/Objects/bytes_methods.c $(BYTESTR_DEPS)
    Objects/bytesobject.o: $(srcdir)/Objects/bytesobject.c $(BYTESTR_DEPS)
    Objects/bytearrayobject.o: $(srcdir)/Objects/bytearrayobject.c $(BYTESTR_DEPS)
    
    Objects/unicodeobject.o: $(srcdir)/Objects/unicodeobject.c $(UNICODE_DEPS)
    
    Objects/odictobject.o: $(srcdir)/Objects/dict-common.h
    Objects/dictobject.o: $(srcdir)/Objects/stringlib/eq.h $(srcdir)/Objects/dict-common.h
    Objects/setobject.o: $(srcdir)/Objects/stringlib/eq.h
    
    .PHONY: regen-opcode-targets
    regen-opcode-targets:
    	# Regenerate Python/opcode_targets.h from Lib/opcode.py
    	# using Python/makeopcodetargets.py
    	$(PYTHON_FOR_REGEN) $(srcdir)/Python/makeopcodetargets.py 
    		$(srcdir)/Python/opcode_targets.h.new
    	$(UPDATE_FILE) $(srcdir)/Python/opcode_targets.h $(srcdir)/Python/opcode_targets.h.new
    
    Python/ceval.o: $(srcdir)/Python/opcode_targets.h $(srcdir)/Python/ceval_gil.h
    
    Python/frozen.o: $(srcdir)/Python/importlib.h $(srcdir)/Python/importlib_external.h
    
    # Generate DTrace probe macros, then rename them (PYTHON_ -> PyDTrace_) to
    # follow our naming conventions. dtrace(1) uses the output filename to generate
    # an include guard, so we can't use a pipeline to transform its output.
    Include/pydtrace_probes.h: $(srcdir)/Include/pydtrace.d
    	$(MKDIR_P) Include
    	$(DTRACE) $(DFLAGS) -o $@ -h -s $<
    	: sed in-place edit with POSIX-only tools
    	sed 's/PYTHON_/PyDTrace_/' $@ > $@.tmp
    	mv $@.tmp $@
    
    Python/pydtrace.o: $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS)
    	$(DTRACE) $(DFLAGS) -o $@ -G -s $< $(DTRACE_DEPS)
    
    Objects/typeobject.o: Objects/typeslots.inc
    
    .PHONY: regen-typeslots
    regen-typeslots:
    	# Regenerate Objects/typeslots.inc from Include/typeslotsh
    	# using Objects/typeslots.py
    	$(PYTHON_FOR_REGEN) $(srcdir)/Objects/typeslots.py 
    		< $(srcdir)/Include/typeslots.h 
    		$(srcdir)/Objects/typeslots.inc.new
    	$(UPDATE_FILE) $(srcdir)/Objects/typeslots.inc $(srcdir)/Objects/typeslots.inc.new
    
    ############################################################################
    # Header files
    
    PYTHON_HEADERS= 
    		$(srcdir)/Include/Python.h 
    		$(srcdir)/Include/abstract.h 
    		$(srcdir)/Include/accu.h 
    		$(srcdir)/Include/asdl.h 
    		$(srcdir)/Include/ast.h 
    		$(srcdir)/Include/bltinmodule.h 
    		$(srcdir)/Include/bitset.h 
    		$(srcdir)/Include/boolobject.h 
    		$(srcdir)/Include/bytes_methods.h 
    		$(srcdir)/Include/bytearrayobject.h 
    		$(srcdir)/Include/bytesobject.h 
    		$(srcdir)/Include/cellobject.h 
    		$(srcdir)/Include/ceval.h 
    		$(srcdir)/Include/classobject.h 
    		$(srcdir)/Include/code.h 
    		$(srcdir)/Include/codecs.h 
    		$(srcdir)/Include/compile.h 
    		$(srcdir)/Include/complexobject.h 
    		$(srcdir)/Include/descrobject.h 
    		$(srcdir)/Include/dictobject.h 
    		$(srcdir)/Include/dtoa.h 
    		$(srcdir)/Include/dynamic_annotations.h 
    		$(srcdir)/Include/enumobject.h 
    		$(srcdir)/Include/errcode.h 
    		$(srcdir)/Include/eval.h 
    		$(srcdir)/Include/fileobject.h 
    		$(srcdir)/Include/fileutils.h 
    		$(srcdir)/Include/floatobject.h 
    		$(srcdir)/Include/frameobject.h 
    		$(srcdir)/Include/funcobject.h 
    		$(srcdir)/Include/genobject.h 
    		$(srcdir)/Include/import.h 
    		$(srcdir)/Include/intrcheck.h 
    		$(srcdir)/Include/iterobject.h 
    		$(srcdir)/Include/listobject.h 
    		$(srcdir)/Include/longintrepr.h 
    		$(srcdir)/Include/longobject.h 
    		$(srcdir)/Include/marshal.h 
    		$(srcdir)/Include/memoryobject.h 
    		$(srcdir)/Include/metagrammar.h 
    		$(srcdir)/Include/methodobject.h 
    		$(srcdir)/Include/modsupport.h 
    		$(srcdir)/Include/moduleobject.h 
    		$(srcdir)/Include/namespaceobject.h 
    		$(srcdir)/Include/node.h 
    		$(srcdir)/Include/object.h 
    		$(srcdir)/Include/objimpl.h 
    		$(srcdir)/Include/opcode.h 
    		$(srcdir)/Include/osdefs.h 
    		$(srcdir)/Include/osmodule.h 
    		$(srcdir)/Include/patchlevel.h 
    		$(srcdir)/Include/pgen.h 
    		$(srcdir)/Include/pgenheaders.h 
    		$(srcdir)/Include/pyarena.h 
    		$(srcdir)/Include/pyatomic.h 
    		$(srcdir)/Include/pycapsule.h 
    		$(srcdir)/Include/pyctype.h 
    		$(srcdir)/Include/pydebug.h 
    		$(srcdir)/Include/pydtrace.h 
    		$(srcdir)/Include/pyerrors.h 
    		$(srcdir)/Include/pyfpe.h 
    		$(srcdir)/Include/pyhash.h 
    		$(srcdir)/Include/pylifecycle.h 
    		$(srcdir)/Include/pymath.h 
    		$(srcdir)/Include/pygetopt.h 
    		$(srcdir)/Include/pymacro.h 
    		$(srcdir)/Include/pymem.h 
    		$(srcdir)/Include/pyport.h 
    		$(srcdir)/Include/pystate.h 
    		$(srcdir)/Include/pystrcmp.h 
    		$(srcdir)/Include/pystrtod.h 
    		$(srcdir)/Include/pystrhex.h 
    		$(srcdir)/Include/pythonrun.h 
    		$(srcdir)/Include/pythread.h 
    		$(srcdir)/Include/pytime.h 
    		$(srcdir)/Include/rangeobject.h 
    		$(srcdir)/Include/setobject.h 
    		$(srcdir)/Include/sliceobject.h 
    		$(srcdir)/Include/structmember.h 
    		$(srcdir)/Include/structseq.h 
    		$(srcdir)/Include/symtable.h 
    		$(srcdir)/Include/sysmodule.h 
    		$(srcdir)/Include/traceback.h 
    		$(srcdir)/Include/tupleobject.h 
    		$(srcdir)/Include/ucnhash.h 
    		$(srcdir)/Include/unicodeobject.h 
    		$(srcdir)/Include/warnings.h 
    		$(srcdir)/Include/weakrefobject.h 
    		pyconfig.h 
    		$(PARSER_HEADERS) 
    		$(srcdir)/Include/Python-ast.h 
    		$(DTRACE_HEADERS)
    
    $(LIBRARY_OBJS) $(MODOBJS) Programs/python.o: $(PYTHON_HEADERS)
    
    
    ######################################################################
    
    TESTOPTS=	$(EXTRATESTOPTS)
    TESTPYTHON=	$(RUNSHARED) ./$(BUILDPYTHON) $(TESTPYTHONOPTS)
    TESTRUNNER=	$(TESTPYTHON) $(srcdir)/Tools/scripts/run_tests.py
    TESTTIMEOUT=	1200
    
    .PHONY: test testall testuniversal buildbottest pythoninfo
    
    # Run a basic set of regression tests.
    # This excludes some tests that are particularly resource-intensive.
    test:		all platform
    		$(TESTRUNNER) $(TESTOPTS)
    
    # Run the full test suite twice - once without .pyc files, and once with.
    # In the past, we've had problems where bugs in the marshalling or
    # elsewhere caused bytecode read from .pyc files to behave differently
    # than bytecode generated directly from a .py source file.  Sometimes
    # the bytecode read from a .pyc file had the bug, sometimes the directly
    # generated bytecode.  This is sometimes a very shy bug needing a lot of
    # sample data.
    testall:	all platform
    		-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
    		$(TESTPYTHON) -E $(srcdir)/Lib/compileall.py
    		-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
    		-$(TESTRUNNER) -u all $(TESTOPTS)
    		$(TESTRUNNER) -u all $(TESTOPTS)
    
    # Run the test suite for both architectures in a Universal build on OSX.
    # Must be run on an Intel box.
    testuniversal:	all platform
    		if [ `arch` != 'i386' ];then 
    			echo "This can only be used on OSX/i386" ;
    			exit 1 ;
    		fi
    		$(TESTRUNNER) -u all $(TESTOPTS)
    		$(RUNSHARED) /usr/libexec/oah/translate 
    			./$(BUILDPYTHON) -E -m test -j 0 -u all $(TESTOPTS)
    
    # Like testall, but with only one pass and without multiple processes.
    # Run an optional script to include information about the build environment.
    buildbottest:	build_all platform
    		-@if which pybuildbot.identify >/dev/null 2>&1; then 
    			pybuildbot.identify "CC='$(CC)'" "CXX='$(CXX)'"; 
    		fi
    		$(TESTRUNNER) -j 1 -u all -W --slowest --timeout=$(TESTTIMEOUT) $(TESTOPTS)
    
    pythoninfo: build_all
    		$(RUNSHARED) ./$(BUILDPYTHON) -m test.pythoninfo
    
    QUICKTESTOPTS=	$(TESTOPTS) -x test_subprocess test_io test_lib2to3 
    		test_multibytecodec test_urllib2_localnet test_itertools 
    		test_multiprocessing_fork test_multiprocessing_spawn 
    		test_multiprocessing_forkserver 
    		test_mailbox test_socket test_poll 
    		test_select test_zipfile test_concurrent_futures
    quicktest:	all platform
    		$(TESTRUNNER) $(QUICKTESTOPTS)
    
    # SSL tests
    .PHONY: multisslcompile multissltest
    multisslcompile: build_all
    	$(RUNSHARED) ./$(BUILDPYTHON) Tools/ssl/multissltests.py --compile-only
    
    multissltest: build_all
    	$(RUNSHARED) ./$(BUILDPYTHON) Tools/ssl/multissltests.py
    
    install:  commoninstall bininstall maninstall 
    	if test "x$(ENSUREPIP)" != "xno"  ; then 
    		case $(ENSUREPIP) in 
    			upgrade) ensurepip="--upgrade" ;; 
    			install|*) ensurepip="" ;; 
    		esac; 
    		$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip 
    			$$ensurepip --root=$(DESTDIR)/ ; 
    	fi
    
    altinstall: commoninstall
    	if test "x$(ENSUREPIP)" != "xno"  ; then 
    		case $(ENSUREPIP) in 
    			upgrade) ensurepip="--altinstall --upgrade" ;; 
    			install|*) ensurepip="--altinstall" ;; 
    		esac; 
    		$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip 
    			$$ensurepip --root=$(DESTDIR)/ ; 
    	fi
    
    commoninstall:  check-clean-src  
    		altbininstall libinstall inclinstall libainstall 
    		sharedinstall oldsharedinstall altmaninstall 
    		
    
    # Install shared libraries enabled by Setup
    DESTDIRS=	$(exec_prefix) $(LIBDIR) $(BINLIBDEST) $(DESTSHARED)
    
    oldsharedinstall: $(DESTSHARED) $(SHAREDMODS)
    		@for i in X $(SHAREDMODS); do 
    		  if test $$i != X; then 
    		    echo $(INSTALL_SHARED) $$i $(DESTSHARED)/`basename $$i`; 
    		    $(INSTALL_SHARED) $$i $(DESTDIR)$(DESTSHARED)/`basename $$i`; 
    		  fi; 
    		done
    
    $(DESTSHARED):
    		@for i in $(DESTDIRS); 
    		do 
    			if test ! -d $(DESTDIR)$$i; then 
    				echo "Creating directory $$i"; 
    				$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; 
    			else    true; 
    			fi; 
    		done
    
    # Install the interpreter with $(VERSION) affixed
    # This goes into $(exec_prefix)
    altbininstall: $(BUILDPYTHON) 
    	@for i in $(BINDIR) $(LIBDIR); 
    	do 
    		if test ! -d $(DESTDIR)$$i; then 
    			echo "Creating directory $$i"; 
    			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; 
    		else	true; 
    		fi; 
    	done
    	if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then 
    		$(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); 
    	else 
    		$(INSTALL_PROGRAM) $(STRIPFLAG) Mac/pythonw $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); 
    	fi
    	-if test "$(VERSION)" != "$(LDVERSION)"; then 
    		if test -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE) -o -h $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); 
    		then rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); 
    		fi; 
    		(cd $(DESTDIR)$(BINDIR); $(LN) python$(LDVERSION)$(EXE) python$(VERSION)$(EXE)); 
    	fi
    	if test -f $(LDLIBRARY) && test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then 
    		if test -n "$(DLLLIBRARY)" ; then 
    			$(INSTALL_SHARED) $(DLLLIBRARY) $(DESTDIR)$(BINDIR); 
    		else 
    			$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); 
    			if test $(LDLIBRARY) != $(INSTSONAME); then 
    				(cd $(DESTDIR)$(LIBDIR); $(LN) -sf $(INSTSONAME) $(LDLIBRARY)) 
    			fi 
    		fi; 
    		if test -n "$(PY3LIBRARY)"; then 
    			$(INSTALL_SHARED) $(PY3LIBRARY) $(DESTDIR)$(LIBDIR)/$(PY3LIBRARY); 
    		fi; 
    	else	true; 
    	fi
    	if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then 
    		rm -f $(DESTDIR)$(BINDIR)python$(VERSION)-32$(EXE); 
    		lipo $(LIPO_32BIT_FLAGS) 
    			-output $(DESTDIR)$(BINDIR)/python$(VERSION)-32$(EXE) 
    			$(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); 
    	fi
    
    bininstall: altbininstall
    	if test ! -d $(DESTDIR)$(LIBPC); then 
    		echo "Creating directory $(LIBPC)"; 
    		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC); 
    	fi
    	-if test -f $(DESTDIR)$(BINDIR)/python3$(EXE) -o -h $(DESTDIR)$(BINDIR)/python3$(EXE); 
    	then rm -f $(DESTDIR)$(BINDIR)/python3$(EXE); 
    	else true; 
    	fi
    	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python3$(EXE))
    	-if test "$(VERSION)" != "$(LDVERSION)"; then 
    		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-config; 
    		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(LDVERSION)-config python$(VERSION)-config); 
    		rm -f $(DESTDIR)$(LIBPC)/python-$(LDVERSION).pc; 
    		(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python-$(LDVERSION).pc); 
    	fi
    	-rm -f $(DESTDIR)$(BINDIR)/python3-config
    	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python3-config)
    	-rm -f $(DESTDIR)$(LIBPC)/python3.pc
    	(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python3.pc)
    	-rm -f $(DESTDIR)$(BINDIR)/idle3
    	(cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3)
    	-rm -f $(DESTDIR)$(BINDIR)/pydoc3
    	(cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3)
    	-rm -f $(DESTDIR)$(BINDIR)/2to3
    	(cd $(DESTDIR)$(BINDIR); $(LN) -s 2to3-$(VERSION) 2to3)
    	-rm -f $(DESTDIR)$(BINDIR)/pyvenv
    	(cd $(DESTDIR)$(BINDIR); $(LN) -s pyvenv-$(VERSION) pyvenv)
    	if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then 
    		rm -f $(DESTDIR)$(BINDIR)/python3-32$(EXE); 
    		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-32$(EXE) python3-32$(EXE)) 
    	fi
    
    # Install the versioned manual page
    altmaninstall:
    	@for i in $(MANDIR) $(MANDIR)/man1; 
    	do 
    		if test ! -d $(DESTDIR)$$i; then 
    			echo "Creating directory $$i"; 
    			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; 
    		else	true; 
    		fi; 
    	done
    	$(INSTALL_DATA) $(srcdir)/Misc/python.man 
    		$(DESTDIR)$(MANDIR)/man1/python$(VERSION).1
    
    # Install the unversioned manual page
    maninstall:	altmaninstall
    	-rm -f $(DESTDIR)$(MANDIR)/man1/python3.1
    	(cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python$(VERSION).1 python3.1)
    
    # Install the library
    XMLLIBSUBDIRS=  xml xml/dom xml/etree xml/parsers xml/sax
    LIBSUBDIRS=	tkinter tkinter/test tkinter/test/test_tkinter 
    		tkinter/test/test_ttk site-packages test 
    		test/audiodata 
    		test/capath test/data 
    		test/cjkencodings test/decimaltestdata test/xmltestdata 
    		test/dtracedata 
    		test/eintrdata 
    		test/imghdrdata 
    		test/libregrtest 
    		test/subprocessdata test/sndhdrdata test/support 
    		test/tracedmodules test/encoded_modules 
    		test/test_import 
    		test/test_import/data 
    		test/test_import/data/circular_imports 
    		test/test_import/data/circular_imports/subpkg 
    		test/test_import/data/package 
    		test/test_import/data/package2 
    		test/test_importlib/namespace_pkgs 
    		test/test_importlib/namespace_pkgs/both_portions 
    		test/test_importlib/namespace_pkgs/both_portions/foo 
    		test/test_importlib/namespace_pkgs/not_a_namespace_pkg 
    		test/test_importlib/namespace_pkgs/not_a_namespace_pkg/foo 
    		test/test_importlib/namespace_pkgs/portion1 
    		test/test_importlib/namespace_pkgs/portion1/foo 
    		test/test_importlib/namespace_pkgs/portion2 
    		test/test_importlib/namespace_pkgs/portion2/foo 
    		test/test_importlib/namespace_pkgs/project1 
    		test/test_importlib/namespace_pkgs/project1/parent 
    		test/test_importlib/namespace_pkgs/project1/parent/child 
    		test/test_importlib/namespace_pkgs/project2 
    		test/test_importlib/namespace_pkgs/project2/parent 
    		test/test_importlib/namespace_pkgs/project2/parent/child 
    		test/test_importlib/namespace_pkgs/project3 
    		test/test_importlib/namespace_pkgs/project3/parent 
    		test/test_importlib/namespace_pkgs/project3/parent/child 
                    test/test_importlib/namespace_pkgs/module_and_namespace_package 
                    test/test_importlib/namespace_pkgs/module_and_namespace_package/a_test 
    		asyncio 
    		test/test_asyncio 
    		collections concurrent concurrent/futures encodings 
    		email email/mime test/test_email test/test_email/data 
    		ensurepip ensurepip/_bundled 
    		html json test/test_json http dbm xmlrpc 
    		sqlite3 sqlite3/test 
    		logging csv wsgiref urllib 
    		lib2to3 lib2to3/fixes lib2to3/pgen2 lib2to3/tests 
    		lib2to3/tests/data lib2to3/tests/data/fixers 
    		lib2to3/tests/data/fixers/myfixes 
    		ctypes ctypes/test ctypes/macholib 
    		idlelib idlelib/Icons idlelib/idle_test 
    		distutils distutils/command distutils/tests $(XMLLIBSUBDIRS) 
    		importlib test/test_importlib test/test_importlib/builtin 
    		test/test_importlib/extension test/test_importlib/frozen 
    		test/test_importlib/import_ test/test_importlib/source 
    		test/test_tools test/test_warnings test/test_warnings/data 
    		turtledemo 
    		multiprocessing multiprocessing/dummy 
    		unittest unittest/test unittest/test/testmock 
    		venv venv/scripts venv/scripts/common venv/scripts/posix 
    		curses pydoc_data
    libinstall:	build_all $(srcdir)/Modules/xxmodule.c
    	@for i in $(SCRIPTDIR) $(LIBDEST); 
    	do 
    		if test ! -d $(DESTDIR)$$i; then 
    			echo "Creating directory $$i"; 
    			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; 
    		else	true; 
    		fi; 
    	done
    	@for d in $(LIBSUBDIRS); 
    	do 
    		a=$(srcdir)/Lib/$$d; 
    		if test ! -d $$a; then continue; else true; fi; 
    		b=$(LIBDEST)/$$d; 
    		if test ! -d $(DESTDIR)$$b; then 
    			echo "Creating directory $$b"; 
    			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$b; 
    		else	true; 
    		fi; 
    	done
    	@for i in $(srcdir)/Lib/*.py; 
    	do 
    		if test -x $$i; then 
    			$(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); 
    			echo $(INSTALL_SCRIPT) $$i $(LIBDEST); 
    		else 
    			$(INSTALL_DATA) $$i $(DESTDIR)$(LIBDEST); 
    			echo $(INSTALL_DATA) $$i $(LIBDEST); 
    		fi; 
    	done
    	@for d in $(LIBSUBDIRS); 
    	do 
    		a=$(srcdir)/Lib/$$d; 
    		if test ! -d $$a; then continue; else true; fi; 
    		if test `ls $$a | wc -l` -lt 1; then continue; fi; 
    		b=$(LIBDEST)/$$d; 
    		for i in $$a/*; 
    		do 
    			case $$i in 
    			*CVS) ;; 
    			*.py[co]) ;; 
    			*.orig) ;; 
    			*~) ;; 
    			*) 
    				if test -d $$i; then continue; fi; 
    				if test -x $$i; then 
    				    echo $(INSTALL_SCRIPT) $$i $$b; 
    				    $(INSTALL_SCRIPT) $$i $(DESTDIR)$$b; 
    				else 
    				    echo $(INSTALL_DATA) $$i $$b; 
    				    $(INSTALL_DATA) $$i $(DESTDIR)$$b; 
    				fi;; 
    			esac; 
    		done; 
    	done
    	$(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py 
    		$(DESTDIR)$(LIBDEST); 
    	$(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
    	if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then 
    		$(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c 
    			$(DESTDIR)$(LIBDEST)/distutils/tests ; 
    	fi
    	-PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) 
    		$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py 
    		-d $(LIBDEST) -f 
    		-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' 
    		$(DESTDIR)$(LIBDEST)
    	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) 
    		$(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py 
    		-d $(LIBDEST) -f 
    		-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' 
    		$(DESTDIR)$(LIBDEST)
    	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) 
    		$(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py 
    		-d $(LIBDEST) -f 
    		-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' 
    		$(DESTDIR)$(LIBDEST)
    	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) 
    		$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py 
    		-d $(LIBDEST)/site-packages -f 
    		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
    	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) 
    		$(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py 
    		-d $(LIBDEST)/site-packages -f 
    		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
    	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) 
    		$(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py 
    		-d $(LIBDEST)/site-packages -f 
    		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
    	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) 
    		$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
    	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) 
    		$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
    
    python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
    	# Substitution happens here, as the completely-expanded BINDIR
    	# is not available in configure
    	sed -e "s,@EXENAME@,$(BINDIR)/python$(LDVERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config.py
    	# Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}
    	LC_ALL=C sed -e 's,$$(([A-Za-z0-9_]*)),$${1},g' < Misc/python-config.sh >python-config
    	# On Darwin, always use the python version of the script, the shell
    	# version doesn't use the compiler customizations that are provided
    	# in python (_osx_support.py).
    	if test `uname -s` = Darwin; then 
    		cp python-config.py python-config; 
    	fi
    
    
    # Install the include files
    INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY)
    inclinstall:
    	@for i in $(INCLDIRSTOMAKE); 
    	do 
    		if test ! -d $(DESTDIR)$$i; then 
    			echo "Creating directory $$i"; 
    			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; 
    		else	true; 
    		fi; 
    	done
    	@for i in $(srcdir)/Include/*.h; 
    	do 
    		echo $(INSTALL_DATA) $$i $(INCLUDEPY); 
    		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY); 
    	done
    	$(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
    
    # Install the library and miscellaneous stuff needed for extending/embedding
    # This goes into $(exec_prefix)
    LIBPL=		$(prefix)/lib/python3.6/config-$(VERSION)$(ABIFLAGS)-x86_64-linux-gnu
    
    # pkgconfig directory
    LIBPC=		$(LIBDIR)/pkgconfig
    
    libainstall:	all python-config
    	@for i in $(LIBDIR) $(LIBPL) $(LIBPC); 
    	do 
    		if test ! -d $(DESTDIR)$$i; then 
    			echo "Creating directory $$i"; 
    			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; 
    		else	true; 
    		fi; 
    	done
    	@if test -d $(LIBRARY); then :; else 
    		if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then 
    			if test "$(SHLIB_SUFFIX)" = .dll; then 
    				$(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; 
    			else 
    				$(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; 
    			fi; 
    		else 
    			echo Skip install of $(LIBRARY) - use make frameworkinstall; 
    		fi; 
    	fi
    	$(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c
    	$(INSTALL_DATA) Programs/python.o $(DESTDIR)$(LIBPL)/python.o
    	$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in
    	$(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile
    	$(INSTALL_DATA) Modules/Setup $(DESTDIR)$(LIBPL)/Setup
    	$(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local
    	$(INSTALL_DATA) Modules/Setup.config $(DESTDIR)$(LIBPL)/Setup.config
    	$(INSTALL_DATA) Misc/python.pc $(DESTDIR)$(LIBPC)/python-$(VERSION).pc
    	$(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup
    	$(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh
    	$(INSTALL_SCRIPT) python-config.py $(DESTDIR)$(LIBPL)/python-config.py
    	$(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(LDVERSION)-config
    	@if [ -s Modules/python.exp -a 
    		"`echo $(MACHDEP) | sed 's/^(...).*/1/'`" = "aix" ]; then 
    		echo; echo "Installing support files for building shared extension modules on AIX:"; 
    		$(INSTALL_DATA) Modules/python.exp		
    				$(DESTDIR)$(LIBPL)/python.exp;		
    		echo; echo "$(LIBPL)/python.exp";		
    		$(INSTALL_SCRIPT) $(srcdir)/Modules/makexp_aix	
    				$(DESTDIR)$(LIBPL)/makexp_aix;		
    		echo "$(LIBPL)/makexp_aix";			
    		$(INSTALL_SCRIPT) Modules/ld_so_aix	
    				$(DESTDIR)$(LIBPL)/ld_so_aix;		
    		echo "$(LIBPL)/ld_so_aix";			
    		echo; echo "See Misc/AIX-NOTES for details.";	
    	else true; 
    	fi
    
    # Install the dynamically loadable modules
    # This goes into $(exec_prefix)
    sharedinstall: sharedmods
    	$(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install 
    	   	--prefix=$(prefix) 
    		--install-scripts=$(BINDIR) 
    		--install-platlib=$(DESTSHARED) 
    		--root=$(DESTDIR)/
    	-rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py
    	-rm -r $(DESTDIR)$(DESTSHARED)/__pycache__
    
    # Here are a couple of targets for MacOSX again, to install a full
    # framework-based Python. frameworkinstall installs everything, the
    # subtargets install specific parts. Much of the actual work is offloaded to
    # the Makefile in Mac
    #
    #
    # This target is here for backward compatibility, previous versions of Python
    # hadn't integrated framework installation in the normal install process.
    frameworkinstall: install
    
    # On install, we re-make the framework
    # structure in the install location, /Library/Frameworks/ or the argument to
    # --enable-framework. If --enable-framework has been specified then we have
    # automatically set prefix to the location deep down in the framework, so we
    # only have to cater for the structural bits of the framework.
    
    frameworkinstallframework: frameworkinstallstructure install frameworkinstallmaclib
    
    frameworkinstallstructure:	$(LDLIBRARY)
    	@if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then 
    		echo Not configured with --enable-framework; 
    		exit 1; 
    	else true; 
    	fi
    	@for i in $(prefix)/Resources/English.lproj $(prefix)/lib; do
    		if test ! -d $(DESTDIR)$$i; then 
    			echo "Creating directory $(DESTDIR)$$i"; 
    			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; 
    		else	true; 
    		fi; 
    	done
    	$(LN) -fsn include/python$(LDVERSION) $(DESTDIR)$(prefix)/Headers
    	sed 's/%VERSION%/'"`$(RUNSHARED) ./$(BUILDPYTHON) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist
    	$(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current
    	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK)
    	$(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers
    	$(LN) -fsn Versions/Current/Resources $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Resources
    	$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY)
    
    # This installs Mac/Lib into the framework
    # Install a number of symlinks to keep software that expects a normal unix
    # install (which includes python-config) happy.
    frameworkinstallmaclib:
    	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).a"
    	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).dylib"
    	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).a"
    	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).dylib"
    	$(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(LDVERSION).dylib"
    	$(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(VERSION).dylib"
    
    # This installs the IDE, the Launcher and other apps into /Applications
    frameworkinstallapps:
    	cd Mac && $(MAKE) installapps DESTDIR="$(DESTDIR)"
    
    # Build the bootstrap executable that will spawn the interpreter inside
    # an app bundle within the framework.  This allows the interpreter to
    # run OS X GUI APIs.
    frameworkpythonw:
    	cd Mac && $(MAKE) pythonw
    
    # This installs the python* and other bin symlinks in $prefix/bin or in
    # a bin directory relative to the framework root
    frameworkinstallunixtools:
    	cd Mac && $(MAKE) installunixtools DESTDIR="$(DESTDIR)"
    
    frameworkaltinstallunixtools:
    	cd Mac && $(MAKE) altinstallunixtools DESTDIR="$(DESTDIR)"
    
    # This installs the Tools into the applications directory.
    # It is not part of a normal frameworkinstall
    frameworkinstallextras:
    	cd Mac && $(MAKE) installextras DESTDIR="$(DESTDIR)"
    
    # This installs a few of the useful scripts in Tools/scripts
    scriptsinstall:
    	SRCDIR=$(srcdir) $(RUNSHARED) 
    	$(PYTHON_FOR_BUILD) $(srcdir)/Tools/scripts/setup.py install 
    	--prefix=$(prefix) 
    	--install-scripts=$(BINDIR) 
    	--root=$(DESTDIR)/
    
    # Build the toplevel Makefile
    Makefile.pre: $(srcdir)/Makefile.pre.in config.status
    	CONFIG_FILES=Makefile.pre CONFIG_HEADERS= $(SHELL) config.status
    	$(MAKE) -f Makefile.pre Makefile
    
    # Run the configure script.
    config.status:	$(srcdir)/configure
    	$(SHELL) $(srcdir)/configure $(CONFIG_ARGS)
    
    .PRECIOUS: config.status $(BUILDPYTHON) Makefile Makefile.pre
    
    # Some make's put the object file in the current directory
    .c.o:
    	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
    
    # bpo-30104: dtoa.c uses union to cast double to unsigned long[2]. clang 4.0
    # with -O2 or higher and strict aliasing miscompiles the ratio() function
    # causing rounding issues. Compile dtoa.c using -fno-strict-aliasing on clang.
    # https://bugs.llvm.org//show_bug.cgi?id=31928
    Python/dtoa.o: Python/dtoa.c
    	$(CC) -c $(PY_CORE_CFLAGS) $(CFLAGS_ALIASING) -o $@ $<
    
    # Run reindent on the library
    reindent:
    	./$(BUILDPYTHON) $(srcdir)/Tools/scripts/reindent.py -r $(srcdir)/Lib
    
    # Rerun configure with the same options as it was run last time,
    # provided the config.status script exists
    recheck:
    	$(SHELL) config.status --recheck
    	$(SHELL) config.status
    
    # Regenerate configure and pyconfig.h.in
    .PHONY: autoconf
    autoconf:
    	# Regenerate the configure script from configure.ac using autoconf
    	(cd $(srcdir); autoconf -Wall)
    	# Regenerate pyconfig.h.in from configure.ac using autoheader
    	(cd $(srcdir); autoheader -Wall)
    
    # Create a tags file for vi
    tags::
    	ctags -w $(srcdir)/Include/*.h
    	for i in $(SRCDIRS); do ctags -f tags -w -a $(srcdir)/$$i/*.[ch]; done
    	ctags -f tags -w -a $(srcdir)/Modules/_ctypes/*.[ch]
    	LC_ALL=C sort -o tags tags
    
    # Create a tags file for GNU Emacs
    TAGS::
    	cd $(srcdir); 
    	etags Include/*.h; 
    	for i in $(SRCDIRS); do etags -a $$i/*.[ch]; done
    
    # Sanitation targets -- clean leaves libraries, executables and tags
    # files, which clobber removes as well
    pycremoval:
    	-find $(srcdir) -depth -name '__pycache__' -exec rm -rf {} ';'
    	-find $(srcdir) -name '*.py[co]' -exec rm -f {} ';'
    
    rmtestturds:
    	-rm -f *BAD *GOOD *SKIPPED
    	-rm -rf OUT
    	-rm -f *.TXT
    	-rm -f *.txt
    	-rm -f gb-18030-2000.xml
    
    docclean:
    	-rm -rf Doc/build
    	-rm -rf Doc/tools/sphinx Doc/tools/pygments Doc/tools/docutils
    
    clean: pycremoval
    	find . -name '*.[oa]' -exec rm -f {} ';'
    	find . -name '*.s[ol]' -exec rm -f {} ';'
    	find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
    	find build -name 'fficonfig.h' -exec rm -f {} ';' || true
    	find build -name '*.py' -exec rm -f {} ';' || true
    	find build -name '*.py[co]' -exec rm -f {} ';' || true
    	-rm -f pybuilddir.txt
    	-rm -f Lib/lib2to3/*Grammar*.pickle
    	-rm -f Programs/_testembed Programs/_freeze_importlib
    	-find build -type f -a ! -name '*.gc??' -exec rm -f {} ';'
    	-rm -f Include/pydtrace_probes.h
    
    profile-removal:
    	find . -name '*.gc??' -exec rm -f {} ';'
    	find . -name '*.profclang?' -exec rm -f {} ';'
    	find . -name '*.dyn' -exec rm -f {} ';'
    	rm -f $(COVERAGE_INFO)
    	rm -rf $(COVERAGE_REPORT)
    
    clobber: clean profile-removal
    	-rm -f $(BUILDPYTHON) $(PGEN) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) 
    		tags TAGS 
    		config.cache config.log pyconfig.h Modules/config.c
    	-rm -rf build platform
    	-rm -rf $(PYTHONFRAMEWORKDIR)
    	-rm -f python-config.py python-config
    
    # Make things extra clean, before making a distribution:
    # remove all generated files, even Makefile[.pre]
    # Keep configure and Python-ast.[ch], it's possible they can't be generated
    distclean: clobber
    	for file in $(srcdir)/Lib/test/data/* ; do 
    	    if test "$$file" != "$(srcdir)/Lib/test/data/README"; then rm "$$file"; fi; 
    	done
    	-rm -f core Makefile Makefile.pre config.status 
    		Modules/Setup Modules/Setup.local Modules/Setup.config 
    		Modules/ld_so_aix Modules/python.exp Misc/python.pc 
    		Misc/python-config.sh
    	-rm -f python*-gdb.py
    	# Issue #28258: set LC_ALL to avoid issues with Estonian locale.
    	# Expansion is performed here by shell (spawned by make) itself before
    	# arguments are passed to find. So LC_ALL=C must be set as a separate
    	# command.
    	LC_ALL=C; find $(srcdir)/[a-zA-Z]* '(' -name '*.fdc' -o -name '*~' 
    				     -o -name '[@,#]*' -o -name '*.old' 
    				     -o -name '*.orig' -o -name '*.rej' 
    				     -o -name '*.bak' ')' 
    				     -exec rm -f {} ';'
    
    # Check for smelly exported symbols (not starting with Py/_Py)
    smelly: all
    	nm -p $(LIBRARY) | 
    		sed -n "/ [TDB] /s/.* //p" | grep -v "^_*Py" | sort -u; 
    
    # Find files with funny names
    funny:
    	find $(SUBDIRS) $(SUBDIRSTOO) 
    		-type d 
    		-o -name '*.[chs]' 
    		-o -name '*.py' 
    		-o -name '*.pyw' 
    		-o -name '*.dat' 
    		-o -name '*.el' 
    		-o -name '*.fd' 
    		-o -name '*.in' 
    		-o -name '*.gif' 
    		-o -name '*.txt' 
    		-o -name '*.xml' 
    		-o -name '*.xbm' 
    		-o -name '*.xpm' 
    		-o -name '*.uue' 
    		-o -name '*.decTest' 
    		-o -name '*.tmCommand' 
    		-o -name '*.tmSnippet' 
    		-o -name 'Setup' 
    		-o -name 'Setup.*' 
    		-o -name README 
    		-o -name NEWS 
    		-o -name HISTORY 
    		-o -name Makefile 
    		-o -name ChangeLog 
    		-o -name .hgignore 
    		-o -name .bzrignore 
    		-o -name MANIFEST 
    		-o -print
    
    # Perform some verification checks on any modified files.
    patchcheck: all
    	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/patchcheck.py
    
    # Dependencies
    
    Python/thread.o:  $(srcdir)/Python/thread_foobar.h $(srcdir)/Python/thread_nt.h $(srcdir)/Python/thread_pthread.h
    
    # Declare targets that aren't real files
    .PHONY: all build_all sharedmods check-clean-src oldsharedmods test quicktest
    .PHONY: install altinstall oldsharedinstall bininstall altbininstall
    .PHONY: maninstall libinstall inclinstall libainstall sharedinstall
    .PHONY: frameworkinstall frameworkinstallframework frameworkinstallstructure
    .PHONY: frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools
    .PHONY: frameworkaltinstallunixtools recheck clean clobber distclean
    .PHONY: smelly funny patchcheck touch altmaninstall commoninstall
    .PHONY: gdbhooks
    
    # IF YOU PUT ANYTHING HERE IT WILL GO AWAY
    # Local Variables:
    # mode: makefile
    # End:
    
    # Rules appended by makedepend
    
    Modules/_threadmodule.o: $(srcdir)/Modules/_threadmodule.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/_threadmodule.c -o Modules/_threadmodule.o
    Modules/_thread$(EXT_SUFFIX):  Modules/_threadmodule.o; $(BLDSHARED)  Modules/_threadmodule.o   -o Modules/_thread$(EXT_SUFFIX)
    Modules/posixmodule.o: $(srcdir)/Modules/posixmodule.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/posixmodule.c -o Modules/posixmodule.o
    Modules/posix$(EXT_SUFFIX):  Modules/posixmodule.o; $(BLDSHARED)  Modules/posixmodule.o   -o Modules/posix$(EXT_SUFFIX)
    Modules/errnomodule.o: $(srcdir)/Modules/errnomodule.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/errnomodule.c -o Modules/errnomodule.o
    Modules/errno$(EXT_SUFFIX):  Modules/errnomodule.o; $(BLDSHARED)  Modules/errnomodule.o   -o Modules/errno$(EXT_SUFFIX)
    Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/pwdmodule.c -o Modules/pwdmodule.o
    Modules/pwd$(EXT_SUFFIX):  Modules/pwdmodule.o; $(BLDSHARED)  Modules/pwdmodule.o   -o Modules/pwd$(EXT_SUFFIX)
    Modules/_sre.o: $(srcdir)/Modules/_sre.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/_sre.c -o Modules/_sre.o
    Modules/_sre$(EXT_SUFFIX):  Modules/_sre.o; $(BLDSHARED)  Modules/_sre.o   -o Modules/_sre$(EXT_SUFFIX)
    Modules/_codecsmodule.o: $(srcdir)/Modules/_codecsmodule.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/_codecsmodule.c -o Modules/_codecsmodule.o
    Modules/_codecs$(EXT_SUFFIX):  Modules/_codecsmodule.o; $(BLDSHARED)  Modules/_codecsmodule.o   -o Modules/_codecs$(EXT_SUFFIX)
    Modules/_weakref.o: $(srcdir)/Modules/_weakref.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/_weakref.c -o Modules/_weakref.o
    Modules/_weakref$(EXT_SUFFIX):  Modules/_weakref.o; $(BLDSHARED)  Modules/_weakref.o   -o Modules/_weakref$(EXT_SUFFIX)
    Modules/_functoolsmodule.o: $(srcdir)/Modules/_functoolsmodule.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/_functoolsmodule.c -o Modules/_functoolsmodule.o
    Modules/_functools$(EXT_SUFFIX):  Modules/_functoolsmodule.o; $(BLDSHARED)  Modules/_functoolsmodule.o   -o Modules/_functools$(EXT_SUFFIX)
    Modules/_operator.o: $(srcdir)/Modules/_operator.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/_operator.c -o Modules/_operator.o
    Modules/_operator$(EXT_SUFFIX):  Modules/_operator.o; $(BLDSHARED)  Modules/_operator.o   -o Modules/_operator$(EXT_SUFFIX)
    Modules/_collectionsmodule.o: $(srcdir)/Modules/_collectionsmodule.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/_collectionsmodule.c -o Modules/_collectionsmodule.o
    Modules/_collections$(EXT_SUFFIX):  Modules/_collectionsmodule.o; $(BLDSHARED)  Modules/_collectionsmodule.o   -o Modules/_collections$(EXT_SUFFIX)
    Modules/itertoolsmodule.o: $(srcdir)/Modules/itertoolsmodule.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/itertoolsmodule.c -o Modules/itertoolsmodule.o
    Modules/itertools$(EXT_SUFFIX):  Modules/itertoolsmodule.o; $(BLDSHARED)  Modules/itertoolsmodule.o   -o Modules/itertools$(EXT_SUFFIX)
    Modules/atexitmodule.o: $(srcdir)/Modules/atexitmodule.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/atexitmodule.c -o Modules/atexitmodule.o
    Modules/atexit$(EXT_SUFFIX):  Modules/atexitmodule.o; $(BLDSHARED)  Modules/atexitmodule.o   -o Modules/atexit$(EXT_SUFFIX)
    Modules/signalmodule.o: $(srcdir)/Modules/signalmodule.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/signalmodule.c -o Modules/signalmodule.o
    Modules/_signal$(EXT_SUFFIX):  Modules/signalmodule.o; $(BLDSHARED)  Modules/signalmodule.o   -o Modules/_signal$(EXT_SUFFIX)
    Modules/_stat.o: $(srcdir)/Modules/_stat.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/_stat.c -o Modules/_stat.o
    Modules/_stat$(EXT_SUFFIX):  Modules/_stat.o; $(BLDSHARED)  Modules/_stat.o   -o Modules/_stat$(EXT_SUFFIX)
    Modules/timemodule.o: $(srcdir)/Modules/timemodule.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/timemodule.c -o Modules/timemodule.o
    Modules/time$(EXT_SUFFIX):  Modules/timemodule.o; $(BLDSHARED)  Modules/timemodule.o   -o Modules/time$(EXT_SUFFIX)
    Modules/_localemodule.o: $(srcdir)/Modules/_localemodule.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/_localemodule.c -o Modules/_localemodule.o
    Modules/_locale$(EXT_SUFFIX):  Modules/_localemodule.o; $(BLDSHARED)  Modules/_localemodule.o   -o Modules/_locale$(EXT_SUFFIX)
    Modules/_iomodule.o: $(srcdir)/Modules/_io/_iomodule.c; $(CC) $(PY_CORE_CFLAGS)  -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/_iomodule.c -o Modules/_iomodule.o
    Modules/iobase.o: $(srcdir)/Modules/_io/iobase.c; $(CC) $(PY_CORE_CFLAGS)  -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/iobase.c -o Modules/iobase.o
    Modules/fileio.o: $(srcdir)/Modules/_io/fileio.c; $(CC) $(PY_CORE_CFLAGS)  -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/fileio.c -o Modules/fileio.o
    Modules/bytesio.o: $(srcdir)/Modules/_io/bytesio.c; $(CC) $(PY_CORE_CFLAGS)  -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/bytesio.c -o Modules/bytesio.o
    Modules/bufferedio.o: $(srcdir)/Modules/_io/bufferedio.c; $(CC) $(PY_CORE_CFLAGS)  -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/bufferedio.c -o Modules/bufferedio.o
    Modules/textio.o: $(srcdir)/Modules/_io/textio.c; $(CC) $(PY_CORE_CFLAGS)  -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/textio.c -o Modules/textio.o
    Modules/stringio.o: $(srcdir)/Modules/_io/stringio.c; $(CC) $(PY_CORE_CFLAGS)  -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/stringio.c -o Modules/stringio.o
    Modules/_io$(EXT_SUFFIX):  Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o; $(BLDSHARED)  Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o   -o Modules/_io$(EXT_SUFFIX)
    Modules/zipimport.o: $(srcdir)/Modules/zipimport.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/zipimport.c -o Modules/zipimport.o
    Modules/zipimport$(EXT_SUFFIX):  Modules/zipimport.o; $(BLDSHARED)  Modules/zipimport.o   -o Modules/zipimport$(EXT_SUFFIX)
    Modules/faulthandler.o: $(srcdir)/Modules/faulthandler.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/faulthandler.c -o Modules/faulthandler.o
    Modules/faulthandler$(EXT_SUFFIX):  Modules/faulthandler.o; $(BLDSHARED)  Modules/faulthandler.o   -o Modules/faulthandler$(EXT_SUFFIX)
    Modules/_tracemalloc.o: $(srcdir)/Modules/_tracemalloc.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/_tracemalloc.c -o Modules/_tracemalloc.o
    Modules/hashtable.o: $(srcdir)/Modules/hashtable.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/hashtable.c -o Modules/hashtable.o
    Modules/_tracemalloc$(EXT_SUFFIX):  Modules/_tracemalloc.o Modules/hashtable.o; $(BLDSHARED)  Modules/_tracemalloc.o Modules/hashtable.o   -o Modules/_tracemalloc$(EXT_SUFFIX)
    Modules/symtablemodule.o: $(srcdir)/Modules/symtablemodule.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/symtablemodule.c -o Modules/symtablemodule.o
    Modules/_symtable$(EXT_SUFFIX):  Modules/symtablemodule.o; $(BLDSHARED)  Modules/symtablemodule.o   -o Modules/_symtable$(EXT_SUFFIX)
    Modules/xxsubtype.o: $(srcdir)/Modules/xxsubtype.c; $(CC) $(PY_CORE_CFLAGS)  -c $(srcdir)/Modules/xxsubtype.c -o Modules/xxsubtype.o
    Modules/xxsubtype$(EXT_SUFFIX):  Modules/xxsubtype.o; $(BLDSHARED)  Modules/xxsubtype.o   -o Modules/xxsubtype$(EXT_SUFFIX)
    

      

    root@gateway Python-3.6.8]# make check
    make: *** No rule to make target `check'. Stop.
    [root@gateway Python-3.6.8]#

    该Makefile中 没有check的假目标

    注意3个目标

    install:  commoninstall bininstall maninstall 
        if test "x$(ENSUREPIP)" != "xno"  ; then 
            case $(ENSUREPIP) in 
                upgrade) ensurepip="--upgrade" ;; 
                install|*) ensurepip="" ;; 
            esac; 
            $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip 
                $$ensurepip --root=$(DESTDIR)/ ; 
        fi

    altinstall: commoninstall
        if test "x$(ENSUREPIP)" != "xno"  ; then 
            case $(ENSUREPIP) in 
                upgrade) ensurepip="--altinstall --upgrade" ;; 
                install|*) ensurepip="--altinstall" ;; 
            esac; 
            $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip 
                $$ensurepip --root=$(DESTDIR)/ ; 
        fi

    gdb hooks

    build_all:  check-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks 
            Programs/_testembed python-config

    # Copy up the gdb python hooks into a position where they can be automatically
    # loaded by gdb during Lib/test/test_gdb.py
    #
    # Distributors are likely to want to install this somewhere else e.g. relative
    # to the stripped DWARF data for the shared library.
    gdbhooks: $(BUILDPYTHON)-gdb.py

  • 相关阅读:
    element-ui实现表格el-table展开行
    jQuery请求本地JSON文件,在谷歌浏览器运行时报跨域错误
    jQuery使用serialize获取form表单数据,中文乱码问题
    Element-ui局部添加loading效果
    Vue中this.$set的使用
    项目管理【81】 | 项目立项管理
    项目管理【80】 | 知识产权与标准规范-标准规范
    项目管理【79】 | 知识产权与标准规范-政府采购法法
    项目管理【78】 | 知识产权与标准规范-招投标法
    项目管理【77】 | 知识产权与标准规范-合同法
  • 原文地址:https://www.cnblogs.com/rsapaper/p/7900958.html
Copyright © 2020-2023  润新知