当前位置: 技术问答>linux和unix
求助gcc编译问题!
来源: 互联网 发布时间:2015-09-01
本文导语: 我们有下面这样的一个程序,源代码如下: /* main.c */ #include "mytool1.h" #include "mytool2.h" int main(int argc,char **argv) { mytool1_print("hello"); mytool2_print("hello"); } /* mytool1.h */ #ifndef _MYTOOL_1_H #define _MYTOOL_1_H void mytool1_pr...
我们有下面这样的一个程序,源代码如下:
/* main.c */
#include "mytool1.h"
#include "mytool2.h"
int main(int argc,char **argv)
{
mytool1_print("hello");
mytool2_print("hello");
}
/* mytool1.h */
#ifndef _MYTOOL_1_H
#define _MYTOOL_1_H
void mytool1_print(char *print_str);
#endif
/* mytool1.c */
#include "mytool1.h"
void mytool1_print(char *print_str)
{
printf("This is mytool1 print %s ",print_str);
}
/* mytool2.h */
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H
void mytool2_print(char *print_str);
#endif
/* mytool2.c */
#include "mytool2.h"
void mytool2_print(char *print_str)
{
printf("This is mytool2 print %s ",print_str);
}
我这样来编译:
gcc -c main.c
gcc -c mytool1.c
gcc -c mytool2.c
gcc -o main main.o mytool1.o mytool2.o
但是最后发生错误,如下:
gcc -o main main.o mytool1.o mytool2.o
main.o(.text+0x19): In function `main':
: undefined reference to `mytool1_print'
main.o(.text+0x29): In function `main':
: undefined reference to `mytool2_print'
collect2: ld returned 1 exit status
make: *** [main] Error 1
请高手指教!
/* main.c */
#include "mytool1.h"
#include "mytool2.h"
int main(int argc,char **argv)
{
mytool1_print("hello");
mytool2_print("hello");
}
/* mytool1.h */
#ifndef _MYTOOL_1_H
#define _MYTOOL_1_H
void mytool1_print(char *print_str);
#endif
/* mytool1.c */
#include "mytool1.h"
void mytool1_print(char *print_str)
{
printf("This is mytool1 print %s ",print_str);
}
/* mytool2.h */
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H
void mytool2_print(char *print_str);
#endif
/* mytool2.c */
#include "mytool2.h"
void mytool2_print(char *print_str)
{
printf("This is mytool2 print %s ",print_str);
}
我这样来编译:
gcc -c main.c
gcc -c mytool1.c
gcc -c mytool2.c
gcc -o main main.o mytool1.o mytool2.o
但是最后发生错误,如下:
gcc -o main main.o mytool1.o mytool2.o
main.o(.text+0x19): In function `main':
: undefined reference to `mytool1_print'
main.o(.text+0x29): In function `main':
: undefined reference to `mytool2_print'
collect2: ld returned 1 exit status
make: *** [main] Error 1
请高手指教!
|
楼上的不要误导人家。
你的那种用法是极其不规范的,在大一点的程序中将死无葬身之地。。。。。
楼主帖出来的程序没有任何问题, 所以估计是楼主原来的程序有点出入,可以仔细检查一下,源代码中main.c中调用的函数和在其他文件中定义的名字是不是一样。也可能是开始编译了后来改了程序,没完全重新编译,所以可以删除所有.o文件,重新编译,连接,应该没问题的。
你的那种用法是极其不规范的,在大一点的程序中将死无葬身之地。。。。。
楼主帖出来的程序没有任何问题, 所以估计是楼主原来的程序有点出入,可以仔细检查一下,源代码中main.c中调用的函数和在其他文件中定义的名字是不是一样。也可能是开始编译了后来改了程序,没完全重新编译,所以可以删除所有.o文件,重新编译,连接,应该没问题的。