-1
У меня есть следующий файл C, и я использую компилятор Mac OS X GCC. Вы найдете ошибку ниже.Ошибка компилятора компилятора команды GCC
#include "support.h"
#ifdef _WIN32
#include <conio.h>
void support_init() {
// not needed
}
void support_clear() {
system("CLS");
}
int support_readkey(int timeout_ms) {
Sleep(timeout_ms);
if (!kbhit()) return 0;
return getch();
}
#else
#include <stdio.h>
#include <unistd.h>
#include <termios.h>
#include <sys/select.h>
void support_init() {
struct termios tio;
tcgetattr(STDIN_FILENO, &tio);
tio.c_lflag &= (~ICANON & ~ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &tio);
}
void support_clear() {
printf("\x1B[2J\x1B[0;0f");
}
int support_readkey(int timeout_ms) {
struct timeval tv = { 0L, timeout_ms * 1000L };
fd_set fds;
FD_ZERO(&fds);
FD_SET(0, &fds);
int r = select(1, &fds, NULL, NULL, &tv);
if (!r) return 0;
return getchar();
}
#endif
И это мой Makefile:
CFLAGS=-std=c11 -Wall -g
CC=clang
all: snake
.PHONY: all clean
snake: snake.o support.o
snake.o: snake.c support.h
clean:
rm -f snake
rm -f snake.o support.o
Когда я пытаюсь скомпилировать с помощью команды "сделать все" я получаю следующее сообщение об ошибке:
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
Пожалуйста, помогите. Я новичок в C :-)
Вы используете 'clang', а не' gcc'. Makefile явно указывает это, и сообщение об ошибке четко указывает на это. Если вам нужна хорошая помощь, то получите свою историю (и теги) прямо. –
Хотя сообщение об ошибке несколько нечеткое, это вполне может быть вызвано отсутствием функции 'main()' в 'snake.c'. Функция main() 'является точкой входа вашей программы; каждая программа должна иметь ровно одну, определенную где-то среди своих исходных файлов. –
Привет, Джон, спасибо за помощь – Philip94