zoukankan      html  css  js  c++  java
  • 编译thrift外篇-关于默认链接包-(使用mapkeeper运行leveldb成功)

    根据 https://stackoverflow.com/questions/9922949/how-to-print-the-ldlinker-search-path 使用 

    ldconfig -v 2>/dev/null | grep -v ^$'	'

    列出了所有的默认链接包路径,使用

    ll /usr/local/cuda-8.0/lib64 /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /usr/lib/nvidia-375 /usr/lib32/nvidia-375 /lib32 /usr/lib32 /lib /usr/lib |grep
    snappy

    可以看到有snappy库。 查看leveldb时,有两个leveldb库,一个是apt-get安装的,一个是自己编译拷贝进去的,两个不一样大。现在想知道apt-get安装的路径在哪。

    使用 ls -d -1 $PWD/**/* 这种方式以全路径方式列出当前目录下的文件,可以套用到上述路径,发现,snappy路径

    /usr/lib/x86_64-linux-gnu/libsnappy.a

    /usr/local/lib/libleveldb.a

    leveldb路径

    第一个是系统安装的。

    通过fincore可知,链接的是/usr/local/lib/libleveldb.a ,也就是自己编译的。

    最后,在Makefile里加上一句  LIB=/usr/lib/x86_64-linux-gnu/

    以及 -L $(LIB) 

    竟然编译成功了!!!!

    根据 http://blog.csdn.net/szyjsj/article/details/69567757 运行, ./mapkeeper_leveldb -d  ./data

    (1)端口是9090

    (2)加了 -L $(LIB)  对于leveldb仍然链接的是/usr/local/lib/libleveldb.a 

            --修正,无法知道链接的是哪一个,似乎是apt-get安装的, remove以后编译就不成功了,即使在 -llibleveldb前加上 -L /usr/local/lib/ 也不行

        然后重新apt-get install,编译成功了,但是清楚缓存后再编译,fincore发现两个地方的leveldb.a 都不在缓存中。

        remove掉,或者重命名,将  -L /usr/local/lib  -lleveldb 放在前面,编译成功。

      于是,可以使用自己的 libleveldb.a 编译了。

    (3)将 /usr/local/include/leveldb删除掉无法编译成功,提示头文件不存在。

    (4) 运行 ./mapkeeper_leveldb -d  ./data 后会打开 /usr/lib/x86_64-linux-gnu/libleveldb.so.1.18  

            这说明 so文件是运行时必须的。

          后来又发现其实so文件并不需要,对其改名, ./mapkeeper_leveldb -d  ./data 照样运行成功。

    -rw-r--r-- 1 root root 816238 Nov 19 2015 /usr/lib/x86_64-linux-gnu/libleveldb.a.old
    lrwxrwxrwx 1 root root 18 Nov 19 2015 /usr/lib/x86_64-linux-gnu/libleveldb.so.1 -> libleveldb.so.1.18
    -rw-r--r-- 1 root root 367496 Nov 19 2015 /usr/lib/x86_64-linux-gnu/libleveldb.so.1.18

    总结:

    首先是要加入  -L /usr/lib/x86_64-linux-gnu/  去除snappy的错误

    要使用自己的libleveldb.a 必须在Makefile中将  -L /usr/local/lib  -lleveldb 放在 -L /usr/lib/x86_64-linux-gnu/ -lboost_thread  的前面。

  • 相关阅读:
    MyBatis之三:多表联合查询
    MyBatis之二:简单增删改查
    MyBatis之一:入门
    如何用Maven创建web项目(具体步骤)
    Maven3.2创建webapp项目过程中问题以及解决方案
    纯前端下载数据Excel文档
    centos7 yum无法正常工作
    Element ui table selection 分页支持保存已经选中的数据,同时支持随时删除选中的数据,并设置默认选择
    删除排序数组中的重复选项
    列表数据(包含父节点关系)转化为树形结构
  • 原文地址:https://www.cnblogs.com/bettersky/p/7429522.html
Copyright © 2011-2022 走看看