为何我编出来的共享库后缀名为.la,而不是.so

chengwei02 2006-03-21 03:32:07
我采用的是Makefile方式,不知如何生成.so的文件?

如下:
INCLUDES = $(all_includes)
lib_LTLIBRARIES = libexp.la
libexp_la_METASOURCES = AUTO
include_HEADERS = shape.h
libexp_la_SOURCES = shape.cpp
...全文
376 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengwei02 2006-03-28
  • 打赏
  • 举报
回复
fierygnu:
只是automake生成的make install不一样,需要单独处理,因为一般用dlopen打开的共享库不会安装在库路径下

怎么不一样?只是打开不一样吗?

如果我非要生成.so的共享库该如何写makefile文件?因为我想在代码里对所有的.so共享库统一处理成动态加载,从扩展名.so判定是否共享库
fierygnu 2006-03-23
  • 打赏
  • 举报
回复
如果不是使用dlopen加载,就用.la就可以。
要是用dlopen方式,有一堆宏,我记不清了,查一下文档吧。
fierygnu 2006-03-23
  • 打赏
  • 举报
回复
不是只能打开.so的共享库。不管共享名是什么,只要是共享库,dlopen都可以打开。只是automake生成的make install不一样,需要单独处理,因为一般用dlopen打开的共享库不会安装在库路径下。
chengwei02 2006-03-23
  • 打赏
  • 举报
回复
是不是说,如果使用dlopen,它只能打开扩展名为.so的共享库?那我就得改写Makefile,生成.so的共享库
fierygnu 2006-03-22
  • 打赏
  • 举报
回复
那就是生成的动态库。
这是因为automake使用libtool生成动态库。
chengwei02 2006-03-22
  • 打赏
  • 举报
回复
看了,都是.so结尾的
chengwei02 2006-03-22
  • 打赏
  • 举报
回复
你是说用.la可以,还是lib里面的,我要自己生成.so,能不能帮我改下makefile?
fierygnu 2006-03-22
  • 打赏
  • 举报
回复
就用它生成的就可以。或者自己在makefile.am里指定编译、连接选项。
chengwei02 2006-03-22
  • 打赏
  • 举报
回复
我如何才能生成.so,如何改makefile吗?
谢谢
joyself 2006-03-22
  • 打赏
  • 举报
回复
refer to "GNU Autoconf, Automake and Libtool"

google for "autobook" which describes the above topic.
fierygnu 2006-03-21
  • 打赏
  • 举报
回复
看.lib目录下。
chengwei02 2006-03-21
  • 打赏
  • 举报
回复
to fierygnu(va_list)

我如何改写我的Makefile,让它生成so?
fierygnu 2006-03-21
  • 打赏
  • 举报
回复
automake生成的共享库。.so也有,是你没有让它生成。
kiroro00 2006-03-21
  • 打赏
  • 举报
回复
这样写gcc xx.o -o libxx.so -Wl,-soname,libxx.so -shared
用你的.o文件替换xx.o
编译.o文件时要加上-fPIC选项

23,121

社区成员

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

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