QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 845|回复: 5

初学LinuxC编程,遇到个问题,请教!

[复制链接]
发表于 2004-7-11 18:09:40 | 显示全部楼层 |阅读模式
我借了一本书,打算学C程序,书上讲到静态函数库时举了个例子.我按她的步骤做了:
    建立两个文件bill.c和linus.c;
/*
This is bill.c
*/
#include <stdio.h>
void bill (char * argv)
{
printf("bill: %s \n ",argv);
}

/*
This is linus.c
*/
#include <stdio.h>
void bill (char * argv)
{
printf("linus: %s \n ",argv);
}
    编译;
$cc -c bill.c linus.c
$ls *.c
bill.c linus.c
    写个头文件;
/*
This is mylib.h
*/
void bill (char *);
void linus (char *);
    创建主程序;
/*
This is main program
*/
#include "mylib.h"
int main()
{
   linus("Hello World !");
   exit(0);
}
    编译;
$cc -c main.c
$cc -c mian mian.o linus.o
在这里书上的意思应该是可以编译成功,可我再这里却出现错误:

$ cc -o main main.c linus.c
/tmp/cc6cGbEA.o(.text+0x19): In function `main':
: undefined reference to `linus'
collect2: ld returned 1 exit status
$

我真的不知道是怎么回事,谁能指点一下?谢谢各位了!
发表于 2004-7-11 19:09:25 | 显示全部楼层
/*
This is linus.c
*/
#include <stdio.h>
void bill (char * argv) // typo error? should be linus?
{
printf("linus: %s \n ",argv);
}
回复

使用道具 举报

发表于 2004-7-11 22:00:36 | 显示全部楼层
第二个函数名误将linus写成bill了,请更正。
回复

使用道具 举报

 楼主| 发表于 2004-7-12 13:14:33 | 显示全部楼层
谢谢两位,我太马虎了,不过,即使我改了也有错误!
$ cc -o main.o linus.o
/usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o(.text+0x1: In function `_start':
: undefined reference to `main'
collect2: ld returned 1 exit status
$
是不是要把那个mylib.h和main.c写在一起保存呐!?
回复

使用道具 举报

发表于 2004-7-12 13:23:31 | 显示全部楼层
你在先要用#incluce"bill.h" 将这个头件包含进来才行, 还有你不要把所有的文件名都写成bill   
回复

使用道具 举报

 楼主| 发表于 2004-7-13 12:08:11 | 显示全部楼层
谢谢各位,好了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 23:42 , Processed in 0.070863 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表