C Неопределенная ссылка
У меня есть следующий код:
main.c
#include "checksum.h"
void main()
{
char *Buf ="GPGGA204502.005106.9813N11402.2921W1090.91065.02M-16.27M";
checksum(Buf);
}
checksum.c
#include <stdio.h>
#include <string.h>
checksum(char *Buff)
{
int i;
unsigned char XOR;
unsigned long iLen = strlen(Buff);
printf("Calculating checksum...\n");
for (XOR = 0, i = 0; i < iLen; i++)
XOR ^= (unsigned char)Buff[i];
printf("%X \n",XOR);
}
checksum.h
#ifndef CHECKSUM_H_INCLUDED
#define CHECKSUM_H_INCLUDED
void checksum(char *Buff);
#endif
При компиляции я получаю следующую ошибку:
/tmp/ccFQS7Ih.o: In function `main':
main.c:(.text+0x18): undefined reference to `checksum'
collect2: ld returned 1 exit status
Я не могу понять, в чем проблема?
3 ответа
Решение
Вы компилируете только один файл, а не оба. Точнее, вы не связываете файлы вместе.
Я не знаю ваш компилятор, но с gcc это будет примерно так:
gcc -c main.c <-- compile only
gcc -c checksum.c <-- compile only
gcc main.o checksum.o <-- link the two
Изменить: чтобы автоматизировать этот процесс, посмотрите на make
программа, которая читает Makefile
s.
Вы также можете попробоватьgcc -o program.out main.c checksum.c
который скомпилирует и свяжет оба файла вместе