zoukankan      html  css  js  c++  java
  • 报错libtest: error while loading shared libraries: libuv.so.1: cannot open shared object file: No such file or directory

    使用g++编译、运行libuv的demo错误解决

    我们通过例子来讲述监视器的使用. 例子中空转监视器回调函数被不断地重复调用,  通过例子我们也可以了解到:

    由于设置了监视器, 所以调用 uv_run() 是程序会阻塞, 空转监视器将会在计数器达到设定的值时停止(监视), uv_run() 会退出因为此时程序中没有活动的监视器了.

    测试代码如下

     1 #include <stdio.h>
     2 #include <uv.h>
     3 
     4 int64_t counter = 0;
     5 
     6 static void wait_for_a_while(uv_idle_t* handle) {
     7     counter++;
     8 
     9     if (counter >= 10e6)
    10         uv_idle_stop(handle);
    11 }
    12 
    13 int main() {
    14     uv_idle_t idler;
    15     uv_idle_init(uv_default_loop(), &idler);
    16     uv_idle_start(&idler, wait_for_a_while);
    17 
    18     printf("Idling...
    ");
    19     uv_run(uv_default_loop(), UV_RUN_DEFAULT);
    20 
    21     return 0;
    22 }
    View Code

    g++ -c libuv_test.c  //生成libuv_test.o文件

    g++ -o libuvtest libuv_test.o  /usr/local/bin/libuv.so  生成目标文件要包含libuv.so库,这里需要全路径,因为我们用到了它里面的函数。

    chmod 755 libtest  //赋予执行权限

    ./libtest

    报错libtest: error while loading shared libraries: libuv.so.1: cannot open shared object file: No such file or directory

    分析原因:ld提示找不到库文件,而库文件就在/usr/local/lib目录中。

    链接器ld默认的目录是/lib和/usr/lib,如果放在其他路径也可以,需要让ld知道库文件在哪里。

    方法1:

    编辑/etc/ld.so.conf文件,在新的一行中加入库文件所在目录;

    运行ldconfig,以更新/etc/ld.so.cache文件;

    方法2:

    在/etc/ld.so.conf.d/目录下新建任何以.conf为后缀的文件,在该文件中加入库文件所在的目录;

    运行ldconfig,以更新/etc/ld.so.cache文件;

     我的解决办法是:在./etc/ld.so.conf文件中添加了/usr/local/lib/ 

    本人觉得第二种办法更为方便,对于原系统的改动最小。因为/etc/ld.so.conf文件的内容是include /etc/ld.so.conf.d/*.conf

    所以,在/etc/ld.so.conf.d/目录下加入的任何以.conf为后缀的文件都能被识别到

    ld.so.cache的更新是递增式的,就像PATH系统环境变量一样,不是从头重新建立,而是向上累加。

    除非重新开机,才是从零开始建立ld.so.cache文件。

  • 相关阅读:
    ActionScript简单实现Socket Tcp应用协议分析器
    您还有心跳吗?超时机制分析
    Java线程池架构2-多线程调度器
    Java 连接池的工作原理
    Integrating JDBC with Hibernate
    Codeforce 1255 Round #601 (Div. 2) C. League of Leesins (大模拟)
    Codeforce 1255 Round #601 (Div. 2)B. Fridge Lockers(思维)
    Codeforce 1255 Round #601 (Div. 2) A. Changing Volume (贪心)
    图论--拓扑排序--判断是否为DAG图
    图论--拓扑排序--判断一个图能否被拓扑排序
  • 原文地址:https://www.cnblogs.com/lisuyun/p/7080401.html
Copyright © 2011-2022 走看看