编译通过但连接有问题,刚接触LINUX编程,我想这个问题应该很简单,可我 还是不会~! 求教~!!
小弟现在自己有一个.C文件,是一个可以单独运行的一段程序,现在我在这个基础上又加了一个的头文件和 一个.C源文件,这些都在同一个目录下,编译的时候可以通过 但连接的时候说找不到我在头文件中声明且在.C文件中定义的函数,整个程序如下(代码本身没有错误,故简略):
///////////////////////////////////////////////
/*main.c*/
#include <stdio.h>
... ...
main()
{
port(22);
printf("thanks~!");
}
/*port.h*/
////////////////////////////////////////////////
#ifndef _PORT_H
#define _PORT_H
#include <stdio.h>
int port(int port );
#endif
//////////////////////////////////////////////////
/*port.c*/
#include <stdio.h>
int port (int port)
{
printf("thank you very much~!");
return 1;
}
当单独编译port.c 和 main.c是都没有错误(gcc -c main.c -o main.o ),但连接main.c是错误提示是这样的
(gcc -g main.c -o main):
......main.c352 :undefined reference to 'port'
这个问题是不是应该再有一些什么样的 参数来指明连接的头和原文件
或者是不是要把port.h和port.c放到系统的什么地方 啊 ?
问题点数:50、回复次数:8Top
1 楼chendc(独行侠)回复于 2004-09-02 12:02:00 得分 2
咦,这个问题以前我也碰到过,不知道怎么回事,把一个文件拆成两个就是不行。Top
2 楼yanghuajia(我要抢分)回复于 2004-09-02 12:02:00 得分 8
/*main.c*/
#include <stdio.h>
#include <port.h>
//^^^^^^^^^^^^^^
... ...
main()
{
port(22);
printf("thanks~!");
}Top
3 楼yanghuajia(我要抢分)回复于 2004-09-02 12:04:44 得分 20
倒!
楼主犯这么低级的 。。。
》》但连接main.c是错误提示是这样的
》》 (gcc -g main.c -o main):
连接命令 gcc main.o port.o -o main
Top
4 楼lifeixiao(李飞笑)回复于 2004-09-02 12:34:27 得分 5
在main.c中加入#include "port.h" 就行了Top
5 楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于 2004-09-02 12:41:32 得分 15
try gcc -o main main.c port.cTop
6 楼xwsun(mov)回复于 2004-09-02 13:11:34 得分 0
在main.c中加入#include "port.h"
这个我 忘记写了
Top
7 楼xwsun(mov)回复于 2004-09-02 13:18:58 得分 0
gcc main.o port.o -o main 和gcc -o main main.c port.c
都是正确的,真得感谢blh(老猫),yanghuajia(newperson)
我是刚刚才开始写LINUX的程序的,所以见笑了 ~~~`
埋单~!Top
8 楼xboy(无薇不至)回复于 2004-09-02 13:28:22 得分 0
uTop




