📄 readme
字号:
build only shared libraries.Cross-compiling on a Unix-like system-------------------------------------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;there are also CXX_FOR_BUILD and CXXFLAGS_FOR_BUILD for the C++ wrapper)when calling the "configure" command. If they are not specified, they defaultto the values of CC and CFLAGS.Using HP's ANSI C++ compiler (aCC)----------------------------------Unless C++ support is disabled by specifying the "--disable-cpp" option of the"configure" script, you *must* include the "-AA" option in the CXXFLAGSenvironment variable in order for the C++ components to compile correctly.Also, note that the aCC compiler on PA-RISC platforms may have a defect wherebyneeded libraries fail to get included when specifying the "-AA" compileroption. If you experience unresolved symbols when linking the C++ programs,use the workaround of specifying the following environment variable prior torunning the "configure" script: CXXLDFLAGS="-lstd_v2 -lCsup_v2"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 and library, because ituses only Standard C functions.Testing PCRE------------To test PCRE on a Unix system, run the RunTest script that is created by theconfiguring process. There is also a script called RunGrepTest that tests theoptions of the pcregrep command. If the C++ wrapper library is build, threetest programs called pcrecpp_unittest, pcre_scanner_unittest, andpcre_stringpiece_unittest are provided.Both the scripts and all the program tests are run if you obey "make runtest","make check", or "make test". For other systems, see the instructions inNON-UNIX-USE.The RunTest script runs the pcretest test program (which is documented in itsown man page) on each of the testinput files (in the testdata directory) inturn, and compares the output with the contents of the corresponding testoutputfiles. 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 test file can also be fed directly into the perltest script to checkthat Perl gives the same results. The only difference you should see is in thefirst few 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 test checks the support for Unicode character properties. It itnot run automatically unless PCRE is built with Unicode property support. To tothis you must set --enable-unicode-properties when running "configure".The seventh, eighth, and ninth tests check the pcre_dfa_exec() alternativematching function, in non-UTF-8 mode, UTF-8 mode, and UTF-8 mode with Unicodeproperty support, respectively. The eighth and ninth tests are not runautomatically unless PCRE is build with the relevant support.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 pcreposix.c ) pcre_compile.c ) pcre_config.c ) pcre_dfa_exec.c ) pcre_exec.c ) pcre_fullinfo.c ) pcre_get.c ) sources for the functions in the library, pcre_globals.c ) and some internal functions that they use pcre_info.c ) pcre_maketables.c ) pcre_newline.c ) pcre_ord2utf8.c ) pcre_refcount.c ) pcre_study.c ) pcre_tables.c ) pcre_try_flipped.c ) pcre_ucp_searchfuncs.c) pcre_valid_utf8.c ) pcre_version.c ) pcre_xclass.c ) ucptable.c ) pcre_printint.src ) debugging function that is #included in pcretest, and ) can also be #included in pcre_compile() pcre.h the public PCRE header file pcreposix.h header for the external POSIX wrapper API pcre_internal.h header for internal use ucp.h ) headers concerned with ucpinternal.h ) Unicode property handling config.in template for config.h, which is built by configure pcrecpp.h the header file for the C++ wrapper pcrecpparg.h.in "source" for another C++ header file pcrecpp.cc ) pcre_scanner.cc ) source for the C++ wrapper library pcre_stringpiece.h.in "source" for pcre_stringpiece.h, the header for the C++ stringpiece functions pcre_stringpiece.cc source for the C++ stringpiece functions(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 RunGrepTest.in template for a Unix shell script for pcregrep tests config.guess ) files used by libtool, config.sub ) used only when building a shared library config.h.in "source" for the config.h header file configure a configuring shell script (built by autoconf) configure.ac 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 pcrecpp_unittest.c ) pcre_scanner_unittest.c ) test programs for the C++ wrapper pcre_stringpiece_unittest.c ) testdata/testinput* test data for main library tests testdata/testoutput* expected test results testdata/grep* input and output for pcregrep tests(C) Auxiliary files for Win32 DLL libpcre.def libpcreposix.def(D) Auxiliary file for VPASCAL makevp.batPhilip HazelEmail local part: ph10Email domain: cam.ac.ukNovember 2006
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -