编译时找不到库文件

csdeveloper2010 2010-06-29 02:23:28
我在SCO_SV scosysv 3.2 5.0.5 i386下用到了操作动态库的函数(dlopen/dlsym等),但是编译的时候找不到这些函数对应的库(在linux下在/usr/lib下有个libdl.a),但在sco下会是在哪个a文件中呢?

请高手指点,分数不多,请包涵
...全文
320 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdeveloper2010 2010-07-05
  • 打赏
  • 举报
回复
没有人帮我解决一下吗
csdeveloper2010 2010-06-30
  • 打赏
  • 举报
回复
回oyster2008:我用$(CC) -o $@ -lc -ldl -L/usr/lib $(OBJ1)这个编译,结果还是:
i386ld libc.a: can't find library libdl.a

回dongnanfanlin:我的libdl.so在/usr/lib下,而我编译的时候是用:
$(CC) -o $@ -lc /usr/lib/libdl.so $(OBJ1),这样编译可以过,就是程序运行起来后用到dlopen()出错
dongnanfanlin 2010-06-29
  • 打赏
  • 举报
回复
这个可能是由于你编译时所链接的库不对导致的

你看下你系统环境变量里的动态库路径,把你需要的那个路径写到最前面

编译器搜索时就会用你需要的库

AIX 系统是LIBPATH=/usr/vacpp/lib:/oracle/tuxedo/lib
HP-UX 系统是LD_LIBRARY_PATH=/bea/tuxedo8.1/lib:/oracle/app/oracle/product/902/lib
你那个系统就不知道了。。上网查下吧
oyster2008 2010-06-29
  • 打赏
  • 举报
回复
使用-ldl,同时加上.so文件所在的目录,例如-L/usr/local/lib
[Quote=引用 5 楼 csdeveloper2010 的回复:]

我现在不加参数,直接跟上so文件,编译是过了,但是程序跑起来后跑到dlopen函数就出错了,打不开我的那个动态库
[/Quote]
csdeveloper2010 2010-06-29
  • 打赏
  • 举报
回复
我现在不加参数,直接跟上so文件,编译是过了,但是程序跑起来后跑到dlopen函数就出错了,打不开我的那个动态库
csdeveloper2010 2010-06-29
  • 打赏
  • 举报
回复
-l选项也可以用在加载so动态库么,我用了之后好像会自动加上.a
如果我用-ldl,编译会提示libdl.a找不到。请问要如何让编译的时候加载libdl.so呢?
白头老汉 2010-06-29
  • 打赏
  • 举报
回复
应该是一样的啊,确认一下动态库的加载路径,看看man帮助
csdeveloper2010 2010-06-29
  • 打赏
  • 举报
回复
有一个是libdl.so的,不知道这个动态库该如何加入编译中??
csdeveloper2010 2010-06-29
  • 打赏
  • 举报
回复
我在linux下用-ldl,不知在sco下该用什么

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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