공유 라이브러리를 사용하는 여러 프로그램이 있습니다. 이러한 공유 라이브러리는 다양한 표준 C 라이브러리를 사용합니다. ie라이브러리에서 std 라이브러리 수학 함수에 대한 참조를 찾을 수 없습니다.
프로그램 A와 프로그램 B는 모두 공유 라이브러리 S를 사용합니다. 공유 라이브러리 S는 표준 C 수학을 사용합니다. 정적으로 공유 라이브러리 S를 표준 라이브러리와 링크 할 수있게하려면 다음과 같이 정적으로 프로그램 A와 B를 S에 연결하여 라이브러리 파일을 끌고 갈 필요가 없습니다. 왜냐하면이 프로그램들이 실행되고 있기 때문입니다. BusyBox 0.61을 실행하는 임베디드 시스템.
../lib/libgainscalecalc.a(gainscalecalc.): In function 'float2gs':
[path to my C file].c:73: undefined reference to 'log'
누군가가 나 좀 도와 주실 래요 : 나는 정적 공유 라이브러리 S에 대해 프로그램을 링크 할 때 그러나, 나는 GCC에서 오류 메시지가 나타거야? 내가 사용 만들기 명령은 다음과 같습니다 :
CFLAGS += -Wall -g -W
INCFLAGS = -I$(CROSS_INCLUDE)/usr/include
LIBFLAGS += -L$(CROSS_LIB)/usr/lib -lm
gainscalecalc_static.o: gainscalecalc.c
$(CC) $(CFLAGS) -c $< -I. $(INCFLAGS) -o [email protected]
gainscalecalc_dynamic.o: gainscalecalc.c
$(CC) $(CFLAGS) -fPIC -c $< -o [email protected]
all: staticlib dynamiclib static_driver dynamic_driver
clean:
$(RM) *.o *.a *.so *~ driver core $(OBJDIR)
static_driver: driver.c staticlib
$(CC) $(CFLAGS) -static driver.c $(INCFLAGS) $(LIBFLAGS) -I. -L. -lgainscalecalc -o [email protected]
dynamic_driver: driver.c dynamiclib
$(CC) $(CFLAGS) driver.c -o [email protected] -L. -lgainscalecalc
staticlib: gainscalecalc_static.o
$(AR) $(ARFLAGS) libgainscalecalc.a gainscalecalc_static.o
$(RANLIB) libgainscalecalc.a
chmod 777 libgainscalecalc.a
dynamiclib: gainscalecalc_dynamic.o
$(CC) -shared -o libgainscalecalc.so gainscalecalc_dynamic.o
chmod 777 libgainscalecalc.so
편집 :이 공유 라이브러리에 연결 컴파일 잘, 나는 아직