免费注册 查看新帖 |

Chinaunix

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

静态库问题, 有点搞不懂了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-12 16:50 |只看该作者 |倒序浏览
静态库2中包含了静态库1, 在链接时为什么找不到静态库1中定义的符号?
是不能这么做么?
如:
f1.c
void fun1()
{
printf("f1!\n");
}
f2.c
void fun2()
{
printf("f2!\n");
}

main.c
int main()
{
printf("Hello World!\n");
fun1();
fun2();
return 0;
}

makefile
all: main.o libtest2.a
    gcc $^ -o main
libtest2.a:libtest1.a f2.o
    ar r $@ $^
libtest1.a:f1.o
    ar r $@ $^

链接报错:undefined reference to '_fun1'

论坛徽章:
0
2 [报告]
发表于 2007-10-12 16:59 |只看该作者
这样库嵌套好像是不行
直接把  .o 加到 libtest1.a 里面阿。搞这么多库干什么

论坛徽章:
0
3 [报告]
发表于 2007-10-12 17:01 |只看该作者
高手们, 自己搞了好半天了, 不知道什么原因啊?

论坛徽章:
0
4 [报告]
发表于 2007-10-12 17:03 |只看该作者

回复 #2 angelanpan 的帖子

在ARM® Developer Suite   Version 1.2
Linker and Utilities Guide中

Example 6-7  Merge libraries and add (or replace) files
armar -r my_lib.a obj1.o my_lib.a other_lib.a obj2.o obj3.o

应该是可以嵌套的吧

论坛徽章:
0
5 [报告]
发表于 2007-10-12 17:10 |只看该作者
这是不是 armar 不同于 ar?

论坛徽章:
0
6 [报告]
发表于 2007-10-12 17:37 |只看该作者
不可以的,老实点吧

论坛徽章:
0
7 [报告]
发表于 2007-10-12 17:45 |只看该作者
原帖由 enigma1983 于 2007-10-12 17:37 发表
不可以的,老实点吧


这样不可以的话, 那ARM® Developer Suite中的example怎么解释呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP