关于can't load library '****.so'的错误

pan7861 2008-11-19 05:48:01
我编写的程序通过了编译,当我将这个程序所在目录mount到开发板的系统中后,执行这个程序出现can't load library 'lib_Engine.so'的错误,可是我将开发包中的例子程序放里面运行却没这错误(例子程序其实也调用了这个库),我怀疑是Makefile里面的编译配置不对,谁能帮我看看是哪的问题。一下附上我的Makefile文件内容:
注:我程序中一共用到两个so文件,一个是lib_Engine.so,另一个是libmpi.so

####################################3
DVS_ROOT = $(PWD)/../

CC = arm-uclibc-linux-gcc
CFLAGS = -g
INCLUDE = -I. \
-I$(DVS_ROOT)mpp/include \
-I$(DVS_ROOT)pub/include \
-I$(DVS_ROOT)mpp/include/mkp

LIB_PATH = -L$(DVS_ROOT)mpp/lib.rel

LIB = $(LIB_PATH)/libmpi.a \
$(LIB_PATH)/lib_Engine.a \
$(LIB_PATH)/libtde.a


OBJS = code.o config.o log.o func.o draw.o avenc.o
HDRS = code.h config.h log.h func.h draw.h avenc.h

code: $(OBJS)
$(CC) $(OBJS) -lpthread -lm -lmpi -ltde -l_Engine -o $@ $(LIB) $(LIB_PATH)
%.o: %.c $(HDRS)
$(CC) $(CFLAGS) $(INCLUDE) -c $< $(LIB)

clean:
rm -rf code *.o
...全文
9888 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
once_and_again 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 pan7861 的回复:]
问题自己解决了,是放到目标板操作系统根目录的lib目录下就可以了。
[/Quote] /usr/lib
pan7861 2008-11-20
  • 打赏
  • 举报
回复
问题自己解决了,是放到目标板操作系统根目录的lib目录下就可以了。
pan7861 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 joyself 的回复:]
用 ldd 命令 看一下你的应用程序链接了哪些动态库。 然后再找lib_Engine.so看看它的路径。
[/Quote]
显示的是:ldd lib_Engine.so
ldd: warning: you do not have execution permission for `./lib_Engine.so'
not a dynamic executable

[Quote=引用 3 楼 guosha 的回复:]
在你的目标板上lib_Engine.so放在了什么地方?
通过/etc/ld.so.conf能不找到lib_Engine.so所在的目录?
如果前面两步没问题了,
运行一下命令ldconfig
最后运行你的程序,查看结果。
[/Quote]
我的目标板上没有lib_Engine.so,而且我的目标板上没有/etc/ld.so.conf这个文件,但是开发包里的例子程序拷贝过去可以运行而我的程序提示can't load 这个so文件,运行ldconfig显示:ldconfig
ldconfig: Can't create temporary cache file /etc/ld.so.cache~: Permission denied
cloudflashes 2008-11-19
  • 打赏
  • 举报
回复
检查一下你的lib_engine.so文件的路径和权限。
zhoujianhei 2008-11-19
  • 打赏
  • 举报
回复
应该是路径没有搞对。
快乐田伯光 2008-11-19
  • 打赏
  • 举报
回复
在你的目标板上lib_Engine.so放在了什么地方?
通过/etc/ld.so.conf能不找到lib_Engine.so所在的目录?
如果前面两步没问题了,
运行一下命令ldconfig
最后运行你的程序,查看结果。
yh4130a 2008-11-19
  • 打赏
  • 举报
回复
看看 这个 .so是否注册,
joyself 2008-11-19
  • 打赏
  • 举报
回复
用 ldd 命令 看一下你的应用程序链接了哪些动态库。 然后再找lib_Engine.so看看它的路径。

23,114

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧