免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2432 | 回复: 12
打印 上一主题 下一主题

.a 请教.sl 连接库的区别 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-05-08 17:01 |只看该作者 |倒序浏览
想生成库A,库A又用到库B.
若库A是.a 类型,生成库时是否需要连接库B?
若库A是.sl 类型,生成库时是否需要连接库B?

多谢。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2003-05-08 17:28 |只看该作者

.a 请教.sl 连接库的区别

若库A是.a 类型,生成库时是否需要连接库B?

ld代码的时候,连接A和B。

库A是.sl 类型,生成库时是否需要连接库B?
如果B是静态的,仍然需要连接。

论坛徽章:
0
3 [报告]
发表于 2003-05-16 13:06 |只看该作者

.a 请教.sl 连接库的区别

若库A是.a 类型,生成库时是否需要连接库B?

ld代码的时候,连接A和B。
~~~~~~~~~~~~~~, 可不可以创建一个库AB, 包含库A和库B,这样ld时只链接AB就行了?

库A是.sl 类型,生成库时是否需要连接库B?
如果B是静态的,仍然需要连接。
~~~~~~~~~~~~~~~~~~~,库A是.sl 类型,库A用到库B(也是.sl的),可执行程序用到库A,在ld可执行程序时,是否需要-lA 和 -lB 同时写上,还是只写-lA就可以了?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2003-05-16 14:00 |只看该作者

.a 请教.sl 连接库的区别

http://www.chinaunix.net/forum/viewtopic.php?t=64604

论坛徽章:
0
5 [报告]
发表于 2003-05-16 16:48 |只看该作者

.a 请教.sl 连接库的区别

还是自己动手做个实验把,下面是结果,分享一下。
环境: HP-UX
SRCs:  baselib.cc  libs.cc  main.cc
关系说明:main.cc 用到libs.cc中的函数f1();
              而f1()用到baselib.cc中的函数f2().
              baselib.cc生成库libbaselib.a(.sl);
              libs.cc生成库liblibs.a(.sl).

1. 静态库的实验1
1)  生成libbaselib.a(FROM: baselib.o);
2)  生成liblibs.a       (FROM:  libs.o)
3)  生成可执行程序   (FROM:  main.o liblibs.a libbaselib.a)
结果:
失败:找不到f2()符号!

2. 静态库的实验2
1)  生成libbaselib.a(FROM: baselib.o);
2)  生成liblibs.a       (FROM:  libs.o libbaselib.a)
3)  生成可执行程序   (FROM:  main.o liblibs.a)
结果:联接成功,运行正确!

3. 共享库的实验1
1)  生成libbaselib.sl(FROM: baselib.o);
2)  生成liblibs.sl       (FROM:  libs.o)
3)  生成可执行程序   (FROM:  main.o liblibs.sl)
结果:联接成功,运行时出错:Unresolved symbol:f2()!

3. 共享库的实验2
1)  生成libbaselib.sl(FROM: baselib.o);
2)  生成liblibs.sl       (FROM:  libs.o)
3)  生成可执行程序   (FROM:  main.o liblibs.sl libbaselib.sl)
结果:联接成功,运行正确!

如果我的实验没有错,一切都明白了!

论坛徽章:
0
6 [报告]
发表于 2003-05-16 19:14 |只看该作者

.a 请教.sl 连接库的区别

平时多动手
了解得更快

创建库时是不需要连接的

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2003-05-19 10:25 |只看该作者

.a 请教.sl 连接库的区别

很好,最好的老师是OS和编译器。自己动手试验

论坛徽章:
0
8 [报告]
发表于 2003-05-26 17:59 |只看该作者

.a 请教.sl 连接库的区别

试验结论有点错误,如果按照静态库的实验1做的话,会成功的。
把liblibs.a libbaselib.a的顺序颠倒,就会找不到符号。
看来静态库的连接还是有顺序的。

论坛徽章:
0
9 [报告]
发表于 2003-05-26 18:01 |只看该作者

.a 请教.sl 连接库的区别

原帖由 "无双" 发表:
平时多动手
了解得更快

创建库时是不需要连接的


不是吧?就像我的“2. 静态库的实验2 ”,不是成功了吗?

论坛徽章:
0
10 [报告]
发表于 2003-05-26 19:02 |只看该作者

.a 请教.sl 连接库的区别

你是不是使用了对库2静态连接

我以前写的时候都是编译时必须连接两个库
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP