gcc 메인함수 없이 컴파일...

shi510의 이미지

/* file name = test.c */
int i=0;
char* pcVideoMemory = (char* )0xB8000;
 
while(1){
	pcVideoMemory[i] = 0;
	pcVideoMemory[i + 1] 0x0A;
	i += 2;
 
	if(i >= 80 * 25 * 2){
		break;
	}
}

이런 코드가 있는데 이 코드는 main 함수가 없습니다.
부팅을 위한 코드인데 이런 코드를 어떻게 컴파일 하나요?

gcc -c test.c -o test.o

컴파일 에러가 나오네요..

klara의 이미지

메인 함수를 만드세요.

세벌의 이미지

컴파일 방법은 gcc -c test.c 하는 건데, 에러가 나면 에러메시지에 처리방법에 대한 힌트가 있을 듯.

익명 사용자의 이미지

어셈블리로 된 소스에서 C함수를 호출하는 방법으로 main이 없어도 되게 할 순 있겠습니다만

질문글의 예제는 while이 전역에 나오는 잘못된 C소스이기 때문에
main이 있고 없고 관계없이 잘못된 예제입니다

esrevinu의 이미지

진짜 저렇게만 있다면 다른 소스코드에서 #include "test.c"와 같은 방법으로
포함시키는 거 아닐까요?
추측컨대 모델마다 다른 부분만 떼어서 저렇게 소스코드를 만들어 두고
다음과 같이 하는 거죠.

void some_function()
{
#if defined(MODEL_A)
#include "test_a.c"
#elif defined(MODEL_B)
#include "test_b.c"
#elif ...
...
#endif
}