📄 readme
字号:
You can specify CC and CFLAGS in the normal way to the "configure" command, inorder to cross-compile PCRE for some other host. However, during the buildingprocess, the dftables.c source file is compiled *and run* on the local host, inorder to generate the default character tables (the chartables.c file). Ittherefore needs to be compiled with the local compiler, not the cross compiler.You can do this by specifying CC_FOR_BUILD (and if necessary CFLAGS_FOR_BUILD)when calling the "configure" command. If they are not specified, they defaultto the values of CC and CFLAGS.Building on non-Unix systems----------------------------For a non-Unix system, read the comments in the file NON-UNIX-USE, though ifthe system supports the use of "configure" and "make" you may be able to buildPCRE in the same way as for Unix systems.PCRE has been compiled on Windows systems and on Macintoshes, but I don't knowthe details because I don't use those systems. It should be straightforward tobuild PCRE on any system that has a Standard C compiler, because it uses onlyStandard C functions.Testing PCRE------------To test PCRE on a Unix system, run the RunTest script that is created by theconfiguring process. (This can also be run by "make runtest", "make check", or"make test".) For other systems, see the instructions in NON-UNIX-USE.The script runs the pcretest test program (which is documented in its own manpage) on each of the testinput files (in the testdata directory) in turn,and compares the output with the contents of the corresponding testoutput file.A file called testtry is used to hold the main output from pcretest(testsavedregex is also used as a working file). To run pcretest on just one ofthe test files, give its number as an argument to RunTest, for example: RunTest 2The first file can also be fed directly into the perltest script to check thatPerl gives the same results. The only difference you should see is in the firstfew lines, where the Perl version is given instead of the PCRE version.The second set of tests check pcre_fullinfo(), pcre_info(), pcre_study(),pcre_copy_substring(), pcre_get_substring(), pcre_get_substring_list(), errordetection, and run-time flags that are specific to PCRE, as well as the POSIXwrapper API. It also uses the debugging flag to check some of the internals ofpcre_compile().If you build PCRE with a locale setting that is not the standard C locale, thecharacter tables may be different (see next paragraph). In some cases, this maycause failures in the second set of tests. For example, in a locale where theisprint() function yields TRUE for characters in the range 128-255, the use of[:isascii:] inside a character class defines a different set of characters, andthis shows up in this test as a difference in the compiled code, which is beinglisted for checking. Where the comparison test output contains [\x00-\x7f] thetest will contain [\x00-\xff], and similarly in some other cases. This is not abug in PCRE.The third set of tests checks pcre_maketables(), the facility for building aset of character tables for a specific locale and using them instead of thedefault tables. The tests make use of the "fr_FR" (French) locale. Beforerunning the test, the script checks for the presence of this locale by runningthe "locale" command. If that command fails, or if it doesn't include "fr_FR"in the list of available locales, the third test cannot be run, and a commentis output to say why. If running this test produces instances of the error ** Failed to set locale "fr_FR"in the comparison output, it means that locale is not available on your system,despite being listed by "locale". This does not mean that PCRE is broken.The fourth test checks the UTF-8 support. It is not run automatically unlessPCRE is built with UTF-8 support. To do this you must set --enable-utf8 whenrunning "configure". This file can be also fed directly to the perltest script,provided you are running Perl 5.8 or higher. (For Perl 5.6, a small patch,commented in the script, can be be used.)The fifth test checks error handling with UTF-8 encoding, and internal UTF-8features of PCRE that are not relevant to Perl.The sixth and final test checks the support for Unicode character properties.It it not run automatically unless PCRE is built with Unicode property support.To to this you must set --enable-unicode-properties when running "configure".Character tables----------------PCRE uses four tables for manipulating and identifying characters whose valuesare less than 256. The final argument of the pcre_compile() function is apointer to a block of memory containing the concatenated tables. A call topcre_maketables() can be used to generate a set of tables in the currentlocale. If the final argument for pcre_compile() is passed as NULL, a set ofdefault tables that is built into the binary is used.The source file called chartables.c contains the default set of tables. This isnot supplied in the distribution, but is built by the program dftables(compiled from dftables.c), which uses the ANSI C character handling functionssuch as isalnum(), isalpha(), isupper(), islower(), etc. to build the tablesources. This means that the default C locale which is set for your system willcontrol the contents of these default tables. You can change the default tablesby editing chartables.c and then re-building PCRE. If you do this, you shouldprobably also edit Makefile to ensure that the file doesn't ever getre-generated.The first two 256-byte tables provide lower casing and case flipping functions,respectively. The next table consists of three 32-byte bit maps which identifydigits, "word" characters, and white space, respectively. These are used whenbuilding 32-byte bit maps that represent character classes.The final 256-byte table has bits indicating various character types, asfollows: 1 white space character 2 letter 4 decimal digit 8 hexadecimal digit 16 alphanumeric or '_' 128 regular expression metacharacter or binary zeroYou should not alter the set of characters that contain the 128 bit, as thatwill cause PCRE to malfunction.Manifest--------The distribution should contain the following files:(A) The actual source files of the PCRE library functions and their headers: dftables.c auxiliary program for building chartables.c get.c ) maketables.c ) study.c ) source of the functions pcre.c ) in the library pcreposix.c ) printint.c ) ucp.c ) ucp.h ) source for the code that is used for ucpinternal.h ) Unicode property handling ucptable.c ) ucptypetable.c ) pcre.in "source" for the header for the external API; pcre.h is built from this by "configure" pcreposix.h header for the external POSIX wrapper API internal.h header for internal use config.in template for config.h, which is built by configure(B) Auxiliary files: AUTHORS information about the author of PCRE ChangeLog log of changes to the code INSTALL generic installation instructions LICENCE conditions for the use of PCRE COPYING the same, using GNU's standard name Makefile.in template for Unix Makefile, which is built by configure NEWS important changes in this release NON-UNIX-USE notes on building PCRE on non-Unix systems README this file RunTest.in template for a Unix shell script for running tests config.guess ) files used by libtool, config.sub ) used only when building a shared library configure a configuring shell script (built by autoconf) configure.in the autoconf input used to build configure doc/Tech.Notes notes on the encoding doc/*.3 man page sources for the PCRE functions doc/*.1 man page sources for pcregrep and pcretest doc/html/* HTML documentation doc/pcre.txt plain text version of the man pages doc/pcretest.txt plain text documentation of test program doc/perltest.txt plain text documentation of Perl test program install-sh a shell script for installing files libpcre.pc.in "source" for libpcre.pc for pkg-config ltmain.sh file used to build a libtool script mkinstalldirs script for making install directories pcretest.c comprehensive test program pcredemo.c simple demonstration of coding calls to PCRE perltest Perl test program pcregrep.c source of a grep utility that uses PCRE pcre-config.in source of script which retains PCRE information testdata/testinput1 test data, compatible with Perl testdata/testinput2 test data for error messages and non-Perl things testdata/testinput3 test data for locale-specific tests testdata/testinput4 test data for UTF-8 tests compatible with Perl testdata/testinput5 test data for other UTF-8 tests testdata/testinput6 test data for Unicode property support tests testdata/testoutput1 test results corresponding to testinput1 testdata/testoutput2 test results corresponding to testinput2 testdata/testoutput3 test results corresponding to testinput3 testdata/testoutput4 test results corresponding to testinput4 testdata/testoutput5 test results corresponding to testinput5 testdata/testoutput6 test results corresponding to testinput6(C) Auxiliary files for Win32 DLL dll.mk libpcre.def libpcreposix.def pcre.def(D) Auxiliary file for VPASCAL makevp.batPhilip Hazel <ph10@cam.ac.uk>September 2004
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -