[ljt@market .libs]$ ls -l
total 504
-rw-rw-r-- 1 ljt ljt 396944 Aug 20 10:15 libmdb.a
lrwxrwxrwx 1 ljt ljt 12 Aug 20 10:15 libmdb.la -> ../libmdb.la
-rw-rw-r-- 1 ljt ljt 722 Aug 20 10:15 libmdb.lai
lrwxrwxrwx 1 ljt ljt 15 Aug 20 10:15 libmdb.so -> libmdb.so.0.0.0
lrwxrwxrwx 1 ljt ljt 15 Aug 20 10:15 libmdb.so.0 -> libmdb.so.0.0.0
-rwxrwxr-x 1 ljt ljt 104412 Aug 20 10:15 libmdb.so.0.0.0
我用这个命令编译:
[ljt@market mdb_pro]$ gcc me_mdb-array.c -I/usr/lib/glib/include -L/ljt/yj/mdbtools-0.4/src/libmdb/.libs -lmdb
会产生一个a.out的文件。
然后运行./a.out回车,会提示:
[ljt@market mdb_pro]$ ./a.out
./a.out: error in loading shared libraries: libmdb.so.0: cannot open shared object file: No such file or directory
这是怎么回事,如何编译,请帮忙!谢谢!
12 个解决方案
#1
把那个libmdb.so.0.0拷成libmdb.so试试.
#2
猜测,编译中不能调用链接目标
直接拷成一个libmdb.so.0,而不是一个链接文件。
直接拷成一个libmdb.so.0,而不是一个链接文件。
#3
你把libmdb.so删除就行了,原因是编译器默认链接动态库,而运行时却找不到动态库,如果把libmdb.so删除编译器会链接静态库,则不会找不到。
#4
把libmdb.so所在目录加入到 LD_LIBRARY_PATH 的环境变量中。
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/ljt/yj/mdbtools-0.4/src/libmdb/.libs
export LD_LIBRARY_PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/ljt/yj/mdbtools-0.4/src/libmdb/.libs
export LD_LIBRARY_PATH
#5
同意Francky(寒星)
#6
试过没,结果如何?
#7
直接拷贝一个libmdb.so.0好像不行,我没试通
删除libmdb.so也不通。
至于Francky(寒星) 所说的我不知道怎么做,还往赐教。
我现在将mdbtools的库安装到/usr/local上去了,还是不行,这样编译:
gcc me_mdb-array.c -I/usr/lib/glib/include -lmdb
运行a.out结果还是那样:
./a.out: error in loading shared libraries: libmdb.so.0: cannot open shared object file: No such file or directory
晴帮忙,谢谢!
删除libmdb.so也不通。
至于Francky(寒星) 所说的我不知道怎么做,还往赐教。
我现在将mdbtools的库安装到/usr/local上去了,还是不行,这样编译:
gcc me_mdb-array.c -I/usr/lib/glib/include -lmdb
运行a.out结果还是那样:
./a.out: error in loading shared libraries: libmdb.so.0: cannot open shared object file: No such file or directory
晴帮忙,谢谢!
#8
这样试一下:在/usr/lib下建2个符号链接到 home/ljt/yj/mdbtools-0.4/src/libmdb/.libs 下面的libmdb.a和libmdb.so.0.0.0
这样可以不用加LIBRARY_PATH
这样可以不用加LIBRARY_PATH
#9
怀疑代码有问题
长吗?
贴出来可以吗?
长吗?
贴出来可以吗?
#10
在你home目录下,编辑你的配置文件(如果你用的ksh则是.profile文件,用csh则是.login文件),在配置文件中加入Francky(寒星)所说的那句。然后运行该配置文件或重新登陆就可以。
#11
嗬嗬,可以了
安装libmdb库,系统将它安装到/usr/local中去了,在/usr/local/include和/use/local/lib目录下分别有头文件和前面所讲的库文件。
这是用以下命令可以成功编译:
gcc me_mdb-array.c -I/usr/lib/glib/include -lmdb
并生成a.out文件。但是运行时出现:
./a.out: error in loading shared libraries: libmdb.so.0: cannot open shared object file: No such file or directory
接着我将libmdb.so.0拷贝到/use/lib目录中,(不是连接文件),再运行a.out,就可以运行了。
谁能告诉我为什么?xiexie
#12
因为你的程序使用的是共享连接库。所以在程序加载运行时要找到libmdb.so.0进行装配。 搜索LD_LIBRARY_PATH环境变量配置的目录查找lib.
#1
把那个libmdb.so.0.0拷成libmdb.so试试.
#2
猜测,编译中不能调用链接目标
直接拷成一个libmdb.so.0,而不是一个链接文件。
直接拷成一个libmdb.so.0,而不是一个链接文件。
#3
你把libmdb.so删除就行了,原因是编译器默认链接动态库,而运行时却找不到动态库,如果把libmdb.so删除编译器会链接静态库,则不会找不到。
#4
把libmdb.so所在目录加入到 LD_LIBRARY_PATH 的环境变量中。
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/ljt/yj/mdbtools-0.4/src/libmdb/.libs
export LD_LIBRARY_PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/ljt/yj/mdbtools-0.4/src/libmdb/.libs
export LD_LIBRARY_PATH
#5
同意Francky(寒星)
#6
试过没,结果如何?
#7
直接拷贝一个libmdb.so.0好像不行,我没试通
删除libmdb.so也不通。
至于Francky(寒星) 所说的我不知道怎么做,还往赐教。
我现在将mdbtools的库安装到/usr/local上去了,还是不行,这样编译:
gcc me_mdb-array.c -I/usr/lib/glib/include -lmdb
运行a.out结果还是那样:
./a.out: error in loading shared libraries: libmdb.so.0: cannot open shared object file: No such file or directory
晴帮忙,谢谢!
删除libmdb.so也不通。
至于Francky(寒星) 所说的我不知道怎么做,还往赐教。
我现在将mdbtools的库安装到/usr/local上去了,还是不行,这样编译:
gcc me_mdb-array.c -I/usr/lib/glib/include -lmdb
运行a.out结果还是那样:
./a.out: error in loading shared libraries: libmdb.so.0: cannot open shared object file: No such file or directory
晴帮忙,谢谢!
#8
这样试一下:在/usr/lib下建2个符号链接到 home/ljt/yj/mdbtools-0.4/src/libmdb/.libs 下面的libmdb.a和libmdb.so.0.0.0
这样可以不用加LIBRARY_PATH
这样可以不用加LIBRARY_PATH
#9
怀疑代码有问题
长吗?
贴出来可以吗?
长吗?
贴出来可以吗?
#10
在你home目录下,编辑你的配置文件(如果你用的ksh则是.profile文件,用csh则是.login文件),在配置文件中加入Francky(寒星)所说的那句。然后运行该配置文件或重新登陆就可以。
#11
嗬嗬,可以了
安装libmdb库,系统将它安装到/usr/local中去了,在/usr/local/include和/use/local/lib目录下分别有头文件和前面所讲的库文件。
这是用以下命令可以成功编译:
gcc me_mdb-array.c -I/usr/lib/glib/include -lmdb
并生成a.out文件。但是运行时出现:
./a.out: error in loading shared libraries: libmdb.so.0: cannot open shared object file: No such file or directory
接着我将libmdb.so.0拷贝到/use/lib目录中,(不是连接文件),再运行a.out,就可以运行了。
谁能告诉我为什么?xiexie
#12
因为你的程序使用的是共享连接库。所以在程序加载运行时要找到libmdb.so.0进行装配。 搜索LD_LIBRARY_PATH环境变量配置的目录查找lib.