0
나는 다음과 같은 두 개의 프로젝트가 : 포함오류 : 우분투
`/home/jagbirs/Downloads/sample/SampleExtLib1` containing:
ext_lib1.c
ext_lib1.h
Makefile
/home/jagbirs/Downloads/sample/SampleMakeTest
:
main.c
Makefile
내가 외부 라이브러리를 연결하는 방법을 배우고있다. 이 난은 main.c에서 사용
오전 ext_lib1.h의 함수이다하지만 난 한 후 다음과 같은 오류가 발생합니다 :
gcc -o main main.c -L/home/jagbirs/Downloads/sample/SampleExtLib1 -lext_lib1
main.c:10:22: fatal error: ext_lib1.h: No such file or directory
compilation terminated.
make: *** [all] Error 1
두 메이크 파일은 다음과 같이 SampleMakeTest/Makefile을 :
LIB = main
SRC := main.c
CFLAGS := -I../SampleExtLib1
all: $(SRC)
gcc -o $(LIB) $(SRC) -L/home/jagbirs/Downloads/sample/SampleExtLib1 -lext_lib1
clean:
rm -f *.o
SampleExtLib1/메이크 :
all: ext_lib1.o
ar r libext_lib1.a ext_lib1.o
clean:
rm -f *.o *.a
수있는 몇 가지 행복 e 연결이 제대로 일어나지 않는 이유를 알아내는 데 도움이됩니까? 감사
외부 라이브러리와 여기에 연결하려고합니까? – Sunny
예, 헤더는 라이브러리의 _contract_ 또는 인터페이스를 포함하므로 라이브러리에 의존하는 프로젝트와 라이브러리간에 헤더가 공유됩니다. 데비안 기반 시스템에서 기본 라이브러리에 링크하려면 헤더 파일이 들어있는'lib -dev' 패키지를 설치하십시오. 'lib '패키지에는 공유 라이브러리 (바이너리) 만 들어 있습니다. –
nif
main.c에서 #include "ext_lib1.h"를 제거한 다음 컴파일, 링크 및 정상적으로 실행했습니다. 내가 틀렸다면 나를 정정하십시오. 그러나 공유 라이브러리를 링크했다면 함수가 공유 라이브러리에서 직접 선택되므로 헤더 파일을 명시 적으로 포함 할 필요가 없습니다. 이것이 내가 관찰 한 것입니다. 내가 틀렸다면 나를 바로 잡아주세요. – Sunny