GCC 크로스 컴파일러가 헤더 파일을 찾을 수 없습니다

GCC 크로스 컴파일러가 헤더 파일을 찾을 수 없습니다

ARM 타겟용으로 사전 구축된 크로스 툴체인이 있는 호스트 PC입니다. 소스에서 프로젝트를 빌드하려고 하는데 코드가 pppd-2.4.1 모듈을 빌드하려고 하면 오류가 발생하면서 빌드 프로세스가 중지됩니다. 로그의 관련 부분은 다음과 같습니다.

... ... ...
if [ -f pppd/Makefile.cyt ]; then \
    make -C pppd -f Makefile.cyt; \
else \
    make -C pppd; \
fi
make[3]: Entering directory '/home/vestjo/test/payton_1.4.1.SR1_gpl/payton/src/router/open_source/pkgs/pppd-2.4.1'
make -C pppd
make[4]: Entering directory '/home/vestjo/test/payton_1.4.1.SR1_gpl/payton/src/router/open_source/pkgs/pppd-2.4.1/pppd'
/opt/emlix/pnx8181/bin/arm-linux-gnueabi-gcc -O2 -pipe -Wall -g -DHAVE_PATHS_H -DIPX_CHANGE -DHAVE_MMAP -I../include '-DDESTDIR="/usr/local"' -DCHAPMS=1 -DMPPE=1 -DHAS_SHADOW -DHAVE_CRYPT_H=1 -DUSE_CRYPT=1 -DHAVE_MULTILINK -DUSE_TDB=1 -DPLUGIN -DMAXOCTETS   -c -o utils.o utils.c
utils.c:79:21: error: cy_conf.h: No such file or directory
<builtin>: recipe for target 'utils.o' failed
make[4]: *** [utils.o] Error 1
make[4]: Leaving directory '/home/vestjo/test/payton_1.4.1.SR1_gpl/payton/src/router/open_source/pkgs/pppd-2.4.1/pppd'
Makefile.cyt:18: recipe for target 'all' failed
make[3]: *** [all] Error 2
make[3]: Leaving directory '/home/vestjo/test/payton_1.4.1.SR1_gpl/payton/src/router/open_source/pkgs/pppd-2.4.1'
/home/vestjo/test/payton_1.4.1.SR1_gpl/payton/src/Rules.mk:74: recipe for target '_subdir_pppd' failed
make[2]: *** [_subdir_pppd] Error 2
make[2]: Leaving directory '/home/vestjo/test/payton_1.4.1.SR1_gpl/payton/src/router/open_source'
/home/vestjo/test/payton_1.4.1.SR1_gpl/payton/src/Rules.mk:74: recipe for target '_subdir_open_source' failed
make[1]: *** [_subdir_open_source] Error 2
make[1]: Leaving directory '/home/vestjo/test/payton_1.4.1.SR1_gpl/payton/src/router'
Rules.mk:74: recipe for target '_subdir_router' failed
make: *** [_subdir_router] Error 2

컴파일러가 헤더 파일 'cy_conf.h'를 찾을 수 없습니다. 헤더 파일 경로: $(SRCBASE)/include/cy_conf.h. 프로젝트 makefile은 복잡한 구조와 다중 레벨 재귀 makefile을 가지고 있습니다.

프로젝트의 최상위 디렉터리에는 구성 파일이 포함되어 있지 않지만 하위 디렉터리의 일부 모듈에는 구성 파일이 포함되어 있습니다. 프로젝트는 메인(최상위) 디렉터리에 있는 Makefile을 실행하여 빌드해야 합니다. 코드를 빌드하기 전에 이러한 구성 파일을 실행할 필요는 없습니다. gcc 컴파일러가 헤더 파일을 찾도록 만드는 방법은 무엇입니까?

편집: /pppd디렉토리(하위 폴더)에서 "make"를 실행할 때 동일한 오류가 발생합니다.

pppd$ make
cc -O2 -pipe -Wall -g -DHAVE_PATHS_H -DIPX_CHANGE -DHAVE_MMAP -I../include '-DDESTDIR="/usr/local"' -DCHAPMS=1 -DMPPE=1 -DHAS_SHADOW -DHAVE_CRYPT_H=1 -DUSE_CRYPT=1 -DHAVE_MULTILINK -DUSE_TDB=1 -DPLUGIN -DMAXOCTETS   -c -o utils.o utils.c
utils.c:79:21: fatal error: cy_conf.h: No such file or directory
 #include <cy_conf.h>
                     ^
compilation terminated.
<builtin>: recipe for target 'utils.o' failed

답변1

ppp-2.4.1 소스 코드는 여기에서 다운로드할 수 있습니다:https://download.samba.org/pub/ppp/ 빌드 지침은 고전적입니다. 먼저 소스 디렉터리 상단에서 구성 스크립트를 실행하여 빌드를 구성합니다.

구성이 작동하지 않으면 전처리기가 포함을 찾는 역할을 한다는 것을 아는 것이 도움이 됩니다. export CPPFLAGS=-I${SRCBASE}/include구성 스크립트를 실행하기 전에 도움을 받을 수 있습니다.

이 패키지를 크로스 컴파일하려면 컴파일 타임에 컴파일러를 조정해야 합니다.

CC=<name of>-<your>-<tuple here>-gcc make

관련 정보