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을 가지고 있습니다.
- 최상위 디렉토리파일 생성그리고규칙.mk문서
- toolchain.mk프로필 폴더의 파일
- 구성스크립트와파일 생성대상 "pppd-2.4.1" 모듈의 경우
- 파일 생성"pppd" 하위 디렉터리(/pppd-2.4.1/pppd)의 경우
프로젝트의 최상위 디렉터리에는 구성 파일이 포함되어 있지 않지만 하위 디렉터리의 일부 모듈에는 구성 파일이 포함되어 있습니다. 프로젝트는 메인(최상위) 디렉터리에 있는 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