Linux下编译安装源码包软件configure,make,makeinstall,mak。。。
⼀、程序的组成部分
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. #解压源码包
3、进⼊解压好的源码包:
cd nginx-1.7.7 #进⼊源码包
4、执⾏configure⽂件,此⽂件有两个功能:1、让⽤户选定编译特性;2、检查编译环境。configure执⾏后将⽣成MakeFile⽂件。例如:
./configure --prefix=/usr/local/nginx --conf-path=/etc/f
其中我们通过--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/f.d/中创建以.conf为后缀名的⽂件,⽽后把要增添的路径直接写⾄此⽂件中;然后执⾏如下命令使其⽣效
ldconfig
3、如果程序提供了库⽂件,也会相应的提供头⽂件,⼀般在安装⽬录的include⽬录下,系统默认扫描头⽂件的路径是:/usr/include。我们可以在/usr/include下⽤链接连接到我们安装程序的头⽂件。
ln -s /usr/local/nginx/include /usr/include/yourname
4、可能程序还提供了帮助⽂档,⼀般是安装⽬录下的man⽬录,为了我们可以使⽤man命令查看我们程序的帮助⽂档,我们需要:在/fig中添加⼀条MANPATH,指向我们的⽂档⽬录
The magic behind configure, make, make install
January 19, 2015 UPDATED ON June 12, 2015
If you’ve used any flavour of Unix for development, you’ve probably installed software from source with this magic incantation:
./configure
make
make install
I know I’ve typed it a lot, but in my early days using Linux I didn’t really understand what it meant, I just knew that if I wanted to install software this was the spell to recite. Recently I’ve been building my own Unix tools, and I wanted to tap into this standard install process; not only is it familiar to many Unix users, it’s also a great starting point for
building a package for Homebrew and the various Linux and BSD package managers. It was time to dig into the Unix Grimoire and find out what the incantation does.
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.
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 . 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.
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;
}
Instead of writing the configure script by hand, we need to create a configure.ac file written in m4sh—a combination of macros and POSIX shell script—to describe what the configure script needs to do.
The first m4 macro we need to call is , 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:
AC_INIT([helloworld], [0.1], [george@thoughtbot])
We’re going to use automake for this project, so we need to initialise that with the 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 macro:
AC_PROG_CC
If there were other dependencies, then we’d use other m4 macros here to discover them; for example the 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 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 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])
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.
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 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 .
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 the configure.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
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
The end user doesn’t need to see our autotools setup, so we can distribute the configure script and Ma
kefile.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
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/ .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产⽣的程序的安装步骤。
绝⼤数开源软件都是公布源代码的,源代码⼀般被打包为归档压缩⽂件,然后⼿⼯编译为⼆进制可执⾏⽂件./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 编译
报告错误到 <>
[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
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.guesssystem的头文件
16 -rw-r--r--. 1 1169 1169 14009 3⽉ 20 2018 ic
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 9
5 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 201
5 libpcre16.pc.in
4 -rw-r--r--. 1 1169 1169 377 4⽉ 24 201
5 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 201
5 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 34
5 1⽉ 31 2014
4 -rw-r--r--. 1 1169 1169 598 1⽉ 31 2014
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 217
5 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 218
5 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 326
5 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 217
5 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 217
5 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 217
5 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 218
5 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 217
5 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 217
5 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 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
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
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 ic
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
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_ 4 -rw-r--r--. 1 1169 1169 1858 1⽉ 31 2014
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_ 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 /usr/bin/install -c
checking whether build environment yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking gawk
checking whether make sets $(MAKE)... yes
checking whether make supports yes
checking whether make supports (cached) yes checking for style of include used GNU
checking gcc
checking whether the C yes
checking for C compiler default output a.out
checking for suffix
checking whether we are no
checking for suffix of o
checking whether we are using the GNU yes
checking whether gcc accepts -g... yes
checking for gcc option to accept none needed
checking whether gcc understands -c and - yes
checking dependency style gcc3
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论