Mini-XML (网站:
https://github.com/michaelrsweet/mxml/releases)当前最新的版本是2.10。在 64 位的 CentOS 6.8 上,如果安装了 GCC,按照帮助文档里的介绍,使用下列命令编译并安装:
./configure
make
make install
结果如下:
1)在源文件所在目录下,生成了以下文件:
libmxml.a
libmxml.so
libmxml.so.1
libmxml.so.1.5
如果使用 file 命令查看 so 类型文件,会发现 libmxml.so 是到 libmxml.so.1 的符号链接(symbolic link),libmxml.so.1 是到 libmxml.so.1.5 的符号链接(symbolic link),libmxml.so.1.5 是一个 64 位的共享库文件。这是因为在64位Linux上,GCC默认生成64位的文件。
2)在 /usr/local/include 目录下,新增了 mxml.h 文件。
3)在 /usr/local/lib 目录下,新增了以下文件:
libmxml.a
libmxml.so
libmxml.so.1
libmxml.so.1.5
对于 64 位的 CentOS 6.8,/usr/local/lib 目录下一般应存放 32 位的共享库文件,64 位的共享库文件应该放入 /usr/local/lib64 下。将 64 位的 so 文件放到 /user/local/lib 目录下,这是 Mini-XML 安装时的一个纰漏,它并没有考虑对生成32位库、生成64位库这两种情况进行差异化处理,总是假定生成的是32位的库,所以在生成64位库文件时,文件的保存位置并不是 /usr/local/lib64 。用户应将这些文件从 /usr/local/lib 移动到 /usr/local/lib64 下。
./configure
make
make install
结果如下:
1)在源文件所在目录下,生成了以下文件:
libmxml.a
libmxml.so
libmxml.so.1
libmxml.so.1.5
如果使用 file 命令查看 so 类型文件,会发现 libmxml.so 是到 libmxml.so.1 的符号链接(symbolic link),libmxml.so.1 是到 libmxml.so.1.5 的符号链接(symbolic link),libmxml.so.1.5 是一个 64 位的共享库文件。这是因为在64位Linux上,GCC默认生成64位的文件。
2)在 /usr/local/include 目录下,新增了 mxml.h 文件。
3)在 /usr/local/lib 目录下,新增了以下文件:
libmxml.a
libmxml.so
libmxml.so.1
libmxml.so.1.5
对于 64 位的 CentOS 6.8,/usr/local/lib 目录下一般应存放 32 位的共享库文件,64 位的共享库文件应该放入 /usr/local/lib64 下。将 64 位的 so 文件放到 /user/local/lib 目录下,这是 Mini-XML 安装时的一个纰漏,它并没有考虑对生成32位库、生成64位库这两种情况进行差异化处理,总是假定生成的是32位的库,所以在生成64位库文件时,文件的保存位置并不是 /usr/local/lib64 。用户应将这些文件从 /usr/local/lib 移动到 /usr/local/lib64 下。
如果要编译链接一个调用了 Mini-XML 的 C 程序,gcc 在指定要链接的库时,除了要使用 -lmxml,还要使用 -lpthread ,因为 Mini-XML 在实现时用到了 pthread.h 中声明的函数。编译链接完成后生成的可执行程序有可能是无法执行的,原因在于使用动态链接时,可执行程序未能找到 Mini-XML 的动态库文件。解决办法是告诉 Linux 操作系统到哪里可以找到 Mini-XML 的库文件,最简单的方法是使用下面的方法来设置一下查找库文件的路径:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
(对于 64 位的 CentOS 6.8,默认查找 .h 文件的目录是 /usr/include ,默认查找 .so 文件的目录是 /usr/lib64 。如果有足够权限,可以将 Mini-XML 的头文件 mxml.h 拷贝到 /usr/include 下,将库文件拷贝到 /usr/lib64 下。)
原文链接:https://www.f2er.com/centos/378841.html