具有针对 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