【问题标题】:error while loading shared libraries: libnsd.so: cannot open shared object file: No such file or directory加载共享库时出错:libnsd.so:无法打开共享对象文件:没有这样的文件或目录
【发布时间】:2014-12-28 14:45:24
【问题描述】:

我正在编写两个 C 程序。其中之一使用库libnsd.so。我使用 makefile 编译了两个 C 程序,如下所示:

CC=gcc
CFLAGS= -Wall -g -O -fPIC
RM= rm
HLAV=main
HLAVO=main.o


all:lib $(HLAV)
    cc c2.c -o c2


main: $(HLAVO)

    $(CC) -L. -o $(HLAV) $(HLAVO) -lnsd

lib: libnsd.so

libnsd.so: nsd.o nd.o
    $(CC) -shared $< -o $@



 nsd.o: nsd.c nsd.h nd.h

 nd.o: nd.c nsd.h nd.h



clean:
    $(RM) -rf *.o *.so main

当我尝试运行应用程序时出现错误:

加载共享库时出错:libnsd.so: 无法打开共享 目标文件:没有这样的文件或目录

有人知道怎么解决吗?

【问题讨论】:

    标签: makefile


    【解决方案1】:

    错误信息意味着您的程序找不到动态库libnsd.so

    1. 您需要从系统中找到库路径。

    如果lib不在常规路径,建议放在常规路径。

    libnsd.so 在哪里

    mv your_dir/libnsd.so /usr/local/lib

    注意:如果您的系统上不存在该库,则应先安装它。

    1. 然后,使用ldconfig在config文件中写入路径:
    sudo echo "/usr/local/lib" >> /etc/ld.so.conf
    sudo ldconfig
    

    或者,如果您的工作站没有 root 权限,您可以简单地更改用户环境路径:

    导出 LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

    【讨论】:

    • 如果我在当前目录中有 libnsd.so 怎么办?
    • 将文件放入lib路径mv {$CUR_DIR}/libnsd.so /usr/local/lib,然后按照我的第二步。
    • 好的。非常感谢!
    • 有什么办法可以把它放在makefile里面?
    • 不知道put it inside makefile这句话是什么意思。
    猜你喜欢
    • 2015-06-07
    • 2019-02-16
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 2015-02-27
    • 2012-05-10
    相关资源
    最近更新 更多