免费注册 查看新帖 |

Chinaunix

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

gcc连接库的问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-27 18:08 |只看该作者 |倒序浏览
有3个文件,helper.c     helper.h   howdy.c ,代码如下:
helper.h

void msg(void) ;
void a(void) ;

helper.c

#include "helper.h"
#include <stdio.h>
void msg(void) {
   printf( " tb ok .\n" ) ;

}
void a(void) {
   printf(" test .\n" ) ;
}

howdy.c

#include "helper.h"
#include <stdio.h>
int main(void){

printf( " ===> start " ) ;
msg() ;
a() ;
return 0 ;

}

描述:
把helper.c编译成helper.o,然后把helper.o文件ar到libhelper.a中,这些都没有问题,
执行下面命令:
gcc -g howdy.c -L./libhelper.a -o howdy

报错如下:
Undefined                       first referenced
symbol                             in file
a                                   /var/tmp//cceQP9Oa.o
msg                                 /var/tmp//cceQP9Oa.o
ld: fatal: Symbol referencing errors. No output written to howdy
collect2: ld returned 1 exit status

说明没有调用到a方法和msg方法,如何使用*.a库文件呢?

论坛徽章:
0
2 [报告]
发表于 2006-10-27 18:32 |只看该作者
gcc -g howdy.c -L. -lhelper -o howdy

论坛徽章:
0
3 [报告]
发表于 2006-10-27 19:37 |只看该作者
不要加 .a ,
例如你要链接数学库,使用 -lm 而不是 -llibm.a

还有 ,大写的 L 是用于指定库文件的路径的。

论坛徽章:
0
4 [报告]
发表于 2006-10-27 23:40 |只看该作者
把howdy.c中的helper.h 改成helper.c试试

论坛徽章:
0
5 [报告]
发表于 2006-10-28 00:09 |只看该作者

看看下面是否正确

不知道你是什么操作系统,看看下面是否正确:
gcc -g -o howdy howdy.c libhelper.a
应该没什么问题了,主要是函数原型未声明
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP