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
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 autoconf
, automake
, 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\n");
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 foreign
project:
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 helloworld
file 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 bindir
, libdir
, 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 rubydir
variable 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 configure
script 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的规则,通过扫描一个目录下的所有C\C++ 代码,从而判断出文件之间的依赖关系,如a.cc文件中调用了b.h(如以形势include<b.h>),如果之后a.cc文件被改动,那么只需要重新编译a.cc文件,不需要编译b.h文件。否则所有的文件都需要重新编译)
make 编译
从Makefile中读取指令,根据makefile制定的规则,将c\c++文件编译成*.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(删除源代码(C\C++ 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\n 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
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中
# 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个目标
gdb hooks