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  的前面。

  • 相关阅读:
    Json 格式化, 排序, 标准格式 ,修改字段名 @JSONField @JsonIgnore @JsonIgnoreProperties
    skywalking 服务间链路追踪 (4) --- 项目中追踪各个方法, 监测方法运行时间
    skywalking 服务间链路追踪 (3) ---整合docker使用
    skywalking 服务间链路追踪 (2) ---使用
    skywalking 服务间链路追踪 (1) ---安装
    Exception AOP 异常处理
    messageHelper 统一管理项目的中message
    Json 对象比较
    Nginx 针对建立TCP连接优化
    Nginx 建立三次握手
  • 原文地址:https://www.cnblogs.com/bettersky/p/7429522.html
Copyright © 2011-2022 走看看