链接对象文件GCC / G ++

时间:2013-02-12 17:07:00

标签: gcc linker g++

我有我的主C ++类main.cpp ...

#include "fs.h"

int main(void)
{
    return minit();
}

fs.h

#ifndef __FS__
#define __FS__
int minit (void);
#endif

fs.o(带minit()进入)文件已经是一个目标文件,使用g++编译而没有-g。

这是我的makefile:

myfs:   main.o fs.o
    g++ -o myfs   -m32 -Wall fs.o main.o
main.o: main.cpp fs.h
    g++ -o  main.o -m32 main.cpp

每当我尝试链接所有内容时,链接器都会在main.cpp中提到minit();未定义的引用它可能是什么?

2 个答案:

答案 0 :(得分:0)

你已经在实际实现中定义了一个名为minit()的函数 - 这就是你遇到这个问题的原因。

你需要实际编写函数minit():

int minit(void){ 返回0; }

例如......

答案 1 :(得分:0)

您应该指向编译器,该函数在别处定义。尝试更改此声明:

int minit (void);

到这个

extern int minit (void);