在 64 位的 CentOS 6.8 上使用 Mini-XML 时要注意的问题

来源:互联网 发布:java 获取当前日期 编辑:程序博客网 时间:2024/05/29 17:09
    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 下。

    如果要编译链接一个调用了 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 下。)




0 0
原创粉丝点击