我会对我有的几个链接器和编译器问题提出任何见解
我有main.c文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "assemble.h"
char *fileName;
FILE *file;
int main(int argc, char *argv[]){
char inputFile[MAX_INPUT];
int i, flag = TRUE;
for(i=1; i<argc; i++){
fileName = argv[i];
strcpy(inputFile,argv[i]);
file = fopen(inputFile,"r");
}
flag = assemble(file, fileName); //****this is the problam line****
if(!flag)
printf("Errors found, compilation aborted\n");
else
printf("File %s compiled\n", fileName);
fclose(file);
return 0;
}
在标题assemble.h中,我有一个decleration:
int assemble(FILE *file, char *fileName);
第一个问题是在main.c中我得到未定义的referance为'assemble',id返回1退出状态
第二个问题是在assemble.h中我得到的FILE没有在这个范围内声明。
有谁知道导致这些错误的原因以及解决方法是什么? 提前致谢
[编辑]:makefile。
assembler: main.o assemble.o functions.o
gcc -Wall -ansi -pedantic main.o assemble.o functions.o -o assembler -lm
main.o: main.c assemble.c
gcc -Wall -ansi -pedantic -c main.c assemble.c -lm
assemble.o: assemble.c
gcc -Wall -ansi -pedantic -c assemble.c -lm
functions.o: functions.c
gcc -Wall -ansi -pedantic -c functions.c -lm
clean:
rm -f assembler
rm -f *.o
答案 0 :(得分:1)
您需要编译这两个文件并将它们链接在一起。
gcc main.c assemble.c
或者将它们单独编译为目标文件并链接它们。
gcc -c main.c
gcc -c assemble.c
gcc main.o assemble.o