web-dev-qa-db-ja.com

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 および Rules.mk ファイル
  • toolchain.mk 構成ファイルフォルダーのファイル
  • configure スクリプトおよび Makefile ターゲット 'pppd-2.4.1'モジュール用
  • Makefile for'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
minto

ppp-2.4.1ソースはここからダウンロードできます: https://download.samba.org/pub/ppp/ ビルド手順は古典的です:最初にconfigureスクリプトを実行してビルドを構成しますソースディレクトリの先頭。

構成が機能しない場合は、プリプロセッサがインクルードの検索を担当していることを知っておくと役立ちます。 export CPPFLAGS=-I${SRCBASE}/includeconfigureスクリプトを実行する前に役立ちます

このパッケージをクロスコンパイルするには、コンパイル時にコンパイラを調整する必要があります。

CC=<name of>-<your>-<Tuple here>-gcc make
2
Vincent Achard