当前位置: 技术问答>linux和unix
编译通过但连接有问题,刚接触LINUX编程,我想这个问题应该很简单,可我 还是不会~! 求教~!!
来源: 互联网 发布时间:2015-07-21
本文导语: 小弟现在自己有一个.C文件,是一个可以单独运行的一段程序,现在我在这个基础上又加了一个的头文件和 一个.C源文件,这些都在同一个目录下,编译的时候可以通过 但连接的时候说找不到我在头文件中声明且在.C文件...
小弟现在自己有一个.C文件,是一个可以单独运行的一段程序,现在我在这个基础上又加了一个的头文件和 一个.C源文件,这些都在同一个目录下,编译的时候可以通过 但连接的时候说找不到我在头文件中声明且在.C文件中定义的函数,整个程序如下(代码本身没有错误,故简略):
///////////////////////////////////////////////
/*main.c*/
#include
... ...
main()
{
port(22);
printf("thanks~!");
}
/*port.h*/
////////////////////////////////////////////////
#ifndef _PORT_H
#define _PORT_H
#include
int port(int port );
#endif
//////////////////////////////////////////////////
/*port.c*/
#include
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放到系统的什么地方 啊 ?
///////////////////////////////////////////////
/*main.c*/
#include
... ...
main()
{
port(22);
printf("thanks~!");
}
/*port.h*/
////////////////////////////////////////////////
#ifndef _PORT_H
#define _PORT_H
#include
int port(int port );
#endif
//////////////////////////////////////////////////
/*port.c*/
#include
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放到系统的什么地方 啊 ?
|
倒!
楼主犯这么低级的 。。。
》》但连接main.c是错误提示是这样的
》》 (gcc -g main.c -o main):
连接命令 gcc main.o port.o -o main
楼主犯这么低级的 。。。
》》但连接main.c是错误提示是这样的
》》 (gcc -g main.c -o main):
连接命令 gcc main.o port.o -o main
|
try gcc -o main main.c port.c
|
/*main.c*/
#include
#include
//^^^^^^^^^^^^^^
... ...
main()
{
port(22);
printf("thanks~!");
}
#include
#include
//^^^^^^^^^^^^^^
... ...
main()
{
port(22);
printf("thanks~!");
}
|
在main.c中加入#include "port.h" 就行了
|
咦,这个问题以前我也碰到过,不知道怎么回事,把一个文件拆成两个就是不行。