makefile 잘못일까요? 소스에 main 함수가 없는 걸까요?

falhed의 이미지

제가 기존에 잘 사용하던 makefile입니다.
소스를 수정해서 컴파일 했습니다.
CC= gcc
LIB = -lkshm -lm
STOCK=/home/user/koscom
INCDIR1 = $(STOCK)/lib/kshm
INCDIR2 = /usr/local/java/include
INCDIR3 = /usr/local/java/include/linux

CFLAGS= -g -I$(INCDIR1) -I$(INCDIR2) -I$(INCDIR3) $(LIB) -L$(INCDIR1) -lkshm
ALL = libgetC.so
all: $(ALL)

libgetC.so:eMoney_st_server_Dbase.h getCount.o dataCopy.o
$(CC) getCount.o dataCopy.o -o libgetC.so $(CFLAGS)

clean:
rm *.o libgetC.so

<컴파일 에러> gcc getCount.o dataCopy.o -o libgetC.so -g -I/home/user/koscom/lib/kshm -I/usr/local/java/include -I/usr/local/java/include/linux -lkshm -lm -L/home/user/koscom/lib/kshm -lkshm /usr/lib/gcc/i386-redhat-linux/3.4.6/../../../crt1.o(.text+0x18): In function `_start': : undefined reference to `main' collect2: ld returned 1 exit status make: *** [libgetC.so] Error 1

--> 그런데 에러가 나네요.ㅠㅠ
makefile이 잘 못 된 걸까요? 아니면 crt1.c에 main 함수가 없는 걸까요?

os는 레드헷을 사용합니다.

답변 꼭 부탁드립니다.

lovian의 이미지

gcc 옵션 문제네요.
shared object를 만드는데 main 함수는 필요 없잖아요?
그런데 main함수를 찾고 있다는건, 실행가능 파일로 링킹하고 있다는 말이죠.
변경된 옵션을 확인하시면 될 듯. (대충 봐도 shared 옵션이 없네여)

-----------------
한글을 사랑합니다.