英文:
./configure --with-libxml2=/usr/lib64/ still get issue `No XML parser found` when configure the apr
问题
在我的CentOS 7容器中,我通过克隆最新版本来配置已下载的/root/apr
:
git clone https://github.com/apache/apr.git
当我执行./configure
时,出现错误:
checking for libxml/parser.h... no
checking Expat 1.95.x... no
checking old Debian-packaged expat... no
checking old FreeBSD-packaged expat... no
checking Expat 1.0/1.1... no
setting LDFLAGS to "-L/usr/local/lib"
setting INCLUDES to "-I/usr/local/include"
checking Expat 1.95.x in /usr/local... no
setting APRUTIL_EXPORT_LIBS to ""
setting APRUTIL_LIBS to ""
configure: error: 未找到XML解析器! 请指定 --with-expat 或 --with-libxml2
然后我安装了libxml2:
yum install -y libxml2
libxml2库位于以下位置:
sh-4.2# ls /usr/lib64/ | grep libxml
libxml2.so.2
libxml2.so.2.9.1
但是,当我执行以下configure
命令时,仍然出现相同的错误:
./configure --with-libxml2=/usr/lib64/
在提出这个问题之前,我尝试了以下操作:
https://stackoverflow.com/a/9783138/7640404
编辑-01
安装了libxml2-devel
后:
yum install libxml2-devel
出现了libxml2.so
:
sh-4.2# ls /usr/lib64 | grep libxml
libxml2.so
libxml2.so.2
libxml2.so.2.9.1
包括:
sh-4.2# ls /usr/include/libxml2/libxml/
DOCBparser.h catalog.h globals.h parserInternals.h tree.h xmlautomata.h xmlregexp.h xmlversion.h
HTMLparser.h chvalid.h hash.h pattern.h uri.h xmlerror.h xmlsave.h xmlwriter.h
HTMLtree.h debugXML.h list.h relaxng.h valid.h xmlexports.h xmlschemas.h xpath.h
SAX.h dict.h nanoftp.h schemasInternals.h xinclude.h xmlmemory.h xmlschemastypes.h xpathInternals.h
SAX2.h encoding.h nanohttp.h schematron.h xlink.h xmlmodule.h xmlstring.h xpointer.h
c14n.h entities.h parser.h threads.h xmlIO.h xmlreader.h xmlunicode.h
但是,当我执行以下configure
命令时,仍然出现相同的错误:
./configure --prefix=/usr/local/apr --with-libxml2=/usr/lib64/
checking sql.h presence... no
checking for sql.h... no
checking odbc/sql.h usability... no
checking odbc/sql.h presence... no
checking for odbc/sql.h... no
checking for xml2-config... no
adding "-I/usr/lib64//include/libxml2" to CPPFLAGS
adding "-lxml2" to LIBS
configure: checking for libxml2 in /usr/lib64/
checking libxml/parser.h usability... no
checking libxml/parser.h presence... no
checking for libxml/parser.h... no
checking Expat 1.95.x... no
checking old Debian-packaged expat... no
checking old FreeBSD-packaged expat... no
checking Expat 1.0/1.1... no
setting LDFLAGS to "-L/usr/local/lib"
setting INCLUDES to "-I/usr/local/include"
checking Expat 1.95.x in /usr/local... no
setting APRUTIL_EXPORT_LIBS to ""
setting APRUTIL_LIBS to ""
configure: error: 未找到XML解析器! 请指定 --with-expat 或 --with-libxml2
编辑-02
感谢William Pursell。我尝试了以下操作:
CFLAGS="-I/usr/include/libxml2/libxml/" ./configure
但仍然不起作用。
甚至更改了configure
文件以添加-I/usr/include/libxml2/libxml
:
if test "x$INCLUDES" = "x"; then
test "x$silent" != "xyes" && echo " setting INCLUDES to \"-I/usr/local/include -I/usr/local/include -I/usr/include/libxml2/libxml \""
INCLUDES="-I/usr/local/include -I/usr/include/libxml2/libxml"
仍然出现相同的错误:
...
checking old FreeBSD-packaged expat... no
checking Expat 1.0/1.1... no
setting LDFLAGS to "-L/usr/local/lib"
setting INCLUDES to "-I/usr/local/include -I/usr/local/include -I/usr/include/libxml2/libxml "
checking Expat 1.95.x in /usr/local... no
setting APRUTIL_EXPORT_LIBS to ""
setting APRUTIL_LIBS to ""
configure: error: 未找到XML解析器! 请指定 --with-expat 或 --with-libxml2
编辑-03
我尝试了:
./configure --with-libxml2=/usr/lib64/include/libxml2
但仍然出现错误:
checking for libpq-fe.h... no
checking postgresql/libpq-fe.h usability... no
checking postgresql/libpq-fe.h presence... no
checking for postgresql/libpq-fe.h... no
checking sqlite3.h usability... no
checking sqlite3.h presence... no
checking for sqlite3.h... no
checking sqlite.h usability... no
checking sqlite.h presence... no
checking for sqlite.h... no
checking for odbc_config... no
checking sql.h usability... no
checking sql.h presence... no
checking for sql.h... no
checking odbc/sql.h usability... no
checking odbc/sql.h presence... no
checking for odbc/sql.h... no
checking for xml2-config... no
adding "-I/usr/lib64/include/libxml2/include/libxml2" to CPPFLAGS
adding "-lxml2" to
<details>
<summary>英文:</summary>
In my centos7 container, I configure the downloaded `/root/apr` by cloning the latest version:
git clone https://github.com/apache/apr.git
when I execute the `./configure`
I get error:
checking for libxml/parser.h... no
checking Expat 1.95.x... no
checking old Debian-packaged expat... no
checking old FreeBSD-packaged expat... no
checking Expat 1.0/1.1... no
setting LDFLAGS to "-L/usr/local/lib"
setting INCLUDES to "-I/usr/local/include"
checking Expat 1.95.x in /usr/local... no
setting APRUTIL_EXPORT_LIBS to ""
setting APRUTIL_LIBS to ""
configure: error: No XML parser found! Please specify --with-expat or --with-libxml2
then I installed libxml2:
yum install -y libxml2
the libxml2 libraries are:
sh-4.2# ls /usr/lib64/ | grep libxml
libxml2.so.2
libxml2.so.2.9.1
but I still get this error when I execute this configure command:
./configure --with-libxml2=/usr/lib64/
---
Before asking this question I have tried:
https://stackoverflow.com/a/9783138/7640404
----
**EDIT-01**
After installed `libxml2-devel`:
yum install libxml2-devel
there have `libxml2.so`
sh-4.2# ls /usr/lib64 | grep libxml
libxml2.so
libxml2.so.2
libxml2.so.2.9.1
the include:
sh-4.2# ls /usr/include/libxml2/libxml/
DOCBparser.h catalog.h globals.h parserInternals.h tree.h xmlautomata.h xmlregexp.h xmlversion.h
HTMLparser.h chvalid.h hash.h pattern.h uri.h xmlerror.h xmlsave.h xmlwriter.h
HTMLtree.h debugXML.h list.h relaxng.h valid.h xmlexports.h xmlschemas.h xpath.h
SAX.h dict.h nanoftp.h schemasInternals.h xinclude.h xmlmemory.h xmlschemastypes.h xpathInternals.h
SAX2.h encoding.h nanohttp.h schematron.h xlink.h xmlmodule.h xmlstring.h xpointer.h
c14n.h entities.h parser.h threads.h xmlIO.h xmlreader.h xmlunicode.h
but still get this issue:
./configure --prefix=/usr/local/apr --with-libxml2=/usr/lib64/
checking sql.h presence... no
checking for sql.h... no
checking odbc/sql.h usability... no
checking odbc/sql.h presence... no
checking for odbc/sql.h... no
checking for xml2-config... no
adding "-I/usr/lib64//include/libxml2" to CPPFLAGS
adding "-lxml2" to LIBS
configure: checking for libxml2 in /usr/lib64/
checking libxml/parser.h usability... no
checking libxml/parser.h presence... no
checking for libxml/parser.h... no
checking Expat 1.95.x... no
checking old Debian-packaged expat... no
checking old FreeBSD-packaged expat... no
checking Expat 1.0/1.1... no
setting LDFLAGS to "-L/usr/local/lib"
setting INCLUDES to "-I/usr/local/include"
checking Expat 1.95.x in /usr/local... no
setting APRUTIL_EXPORT_LIBS to ""
setting APRUTIL_LIBS to ""
configure: error: No XML parser found! Please specify --with-expat or --with-libxml2
---
**EDIT-02**
thanks for William Pursell.
I tried
CFLAGS="-I/usr/include/libxml2/libxml/" ./configure
but still not work.
and even changed the `configure` file to add `-I/usr/include/libxml2/libxml`:
if test "x$INCLUDES" = "x"; then
test "x$silent" != "xyes" && echo " setting INCLUDES to "-I/usr/local/include -I/usr/local/include -I/usr/include/libxml2/libxml ""
INCLUDES="-I/usr/local/include -I/usr/include/libxml2/libxml"
still get this error:
...
checking old FreeBSD-packaged expat... no
checking Expat 1.0/1.1... no
setting LDFLAGS to "-L/usr/local/lib"
setting INCLUDES to "-I/usr/local/include -I/usr/local/include -I/usr/include/libxml2/libxml "
checking Expat 1.95.x in /usr/local... no
setting APRUTIL_EXPORT_LIBS to ""
setting APRUTIL_LIBS to ""
configure: error: No XML parser found! Please specify --with-expat or --with-libxml2
---
**EDIT-03**
I tried :
./configure --with-libxml2=/usr/lib64/include/libxml2
but still get error:
checking langinfo.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking for nl_langinfo... yes
setting have_unicode_fs to "0"
setting apr_has_xthread_files to "0"
setting apr_procattr_user_set_requires_password to "0"
setting apr_thread_func to ""
setting apr_has_user to "1"
Applying apr-util hints file rules for aarch64-unknown-linux-gnu
checking for default DBM... sdbm (default)
checking for pg_config... no
checking libpq-fe.h usability... no
checking libpq-fe.h presence... no
checking for libpq-fe.h... no
checking postgresql/libpq-fe.h usability... no
checking postgresql/libpq-fe.h presence... no
checking for postgresql/libpq-fe.h... no
checking sqlite3.h usability... no
checking sqlite3.h presence... no
checking for sqlite3.h... no
checking sqlite.h usability... no
checking sqlite.h presence... no
checking for sqlite.h... no
checking for odbc_config... no
checking sql.h usability... no
checking sql.h presence... no
checking for sql.h... no
checking odbc/sql.h usability... no
checking odbc/sql.h presence... no
checking for odbc/sql.h... no
checking for xml2-config... no
adding "-I/usr/lib64/include/libxml2/include/libxml2" to CPPFLAGS
adding "-lxml2" to LIBS
configure: checking for libxml2 in /usr/lib64/include/libxml2
checking libxml/parser.h usability... no
checking libxml/parser.h presence... no
checking for libxml/parser.h... no
checking Expat 1.95.x... no
checking old Debian-packaged expat... no
checking old FreeBSD-packaged expat... no
checking Expat 1.0/1.1... no
setting LDFLAGS to "-L/usr/local/lib"
setting INCLUDES to "-I/usr/local/include -I/usr/local/include -I/usr/include/libxml2/libxml "
checking Expat 1.95.x in /usr/local... no
setting APRUTIL_EXPORT_LIBS to ""
setting APRUTIL_LIBS to ""
configure: error: No XML parser found! Please specify --with-expat or --with-libxml2
---
**EDIT-04**
When I execute `./configure --with-libxml2=/usr/include/libxml2`
I still get error:
checking for libpq-fe.h... no
checking postgresql/libpq-fe.h usability... no
checking postgresql/libpq-fe.h presence... no
checking for postgresql/libpq-fe.h... no
checking sqlite3.h usability... no
checking sqlite3.h presence... no
checking for sqlite3.h... no
checking sqlite.h usability... no
checking sqlite.h presence... no
checking for sqlite.h... no
checking for odbc_config... no
checking sql.h usability... no
checking sql.h presence... no
checking for sql.h... no
checking odbc/sql.h usability... no
checking odbc/sql.h presence... no
checking for odbc/sql.h... no
checking for xml2-config... no
adding "-I/usr/include/libxml2/include/libxml2" to CPPFLAGS
adding "-lxml2" to LIBS
configure: checking for libxml2 in /usr/include/libxml2
checking libxml/parser.h usability... no
checking libxml/parser.h presence... no
checking for libxml/parser.h... no
checking Expat 1.95.x... no
checking old Debian-packaged expat... no
checking old FreeBSD-packaged expat... no
checking Expat 1.0/1.1... no
setting LDFLAGS to "-L/usr/local/lib"
setting INCLUDES to "-I/usr/local/include -I/usr/local/include -I/usr/include/libxml2/libxml "
checking Expat 1.95.x in /usr/local... no
setting APRUTIL_EXPORT_LIBS to ""
setting APRUTIL_LIBS to ""
configure: error: No XML parser found! Please specify --with-expat or --with-libxml2
</details>
# 答案1
**得分**: 1
在一个普通的CentOS 7容器中:
docker run --rm -it centos:centos7
安装这些依赖项:
yum groupinstall "Development Tools"
yum install git which libxml2-devel
git clone https://github.com/apache/apr.git # 5a86456
cd apr
这将成功配置并构建项目:
./buildconf
./configure CFLAGS=-I/usr/include/libxml2
make
它将报告类似以下内容:
checking libxml/parser.h usability... yes
checking libxml/parser.h presence... no
configure: WARNING: libxml/parser.h: accepted by the compiler, rejected by the preprocessor!
configure: WARNING: libxml/parser.h: proceeding with the compiler's result
checking for libxml/parser.h... yes
checking for xmlCreatePushParserCtxt in -lxml2... yes
setting APRUTIL_CPPFLAGS to ""
setting APRUTIL_PRIV_INCLUDES to ""
setting APRUTIL_LIBS to "-lxml2"
`--with-libxml2` 标志似乎是不必要的。
<details>
<summary>英文:</summary>
In a plain Centos 7 container
docker run --rm -it centos:centos7
With these dependencies installed
yum groupinstall "Development Tools"
yum install git which libxml2-devel
git clone https://github.com/apache/apr.git # 5a86456
cd apr
This successfully configures and builds the project:
./buildconf
./configure CFLAGS=-I/usr/include/libxml2
make
It will report something like this
checking libxml/parser.h usability... yes
checking libxml/parser.h presence... no
configure: WARNING: libxml/parser.h: accepted by the compiler, rejected by the preprocessor!
configure: WARNING: libxml/parser.h: proceeding with the compiler's result
checking for libxml/parser.h... yes
checking for xmlCreatePushParserCtxt in -lxml2... yes
setting APRUTIL_CPPFLAGS to ""
setting APRUTIL_PRIV_INCLUDES to ""
setting APRUTIL_LIBS to "-lxml2"
The `--with-libxml2` flag seems unnecessary.
</details>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论