クロスコンパイルに疲れ、すでにgcc
Synology DiskStation DS214でDSM 6.1を使用して作業(クロスコンパイル)しているため、最初は空のDiskStationで実行されているLinuxバージョン用のLinuxヘッダーをインストールしようとしました/usr/include
。一つある開発者向けのSynologyのテイクキットしかし、/usr/include
create aのlinux/version.h
ヘッダーはLINUX_VERSION_CODE=132636
与えられた3.2.40よりはるかに低いですuname -a
。おそらく、これはツールキットのDSM 6.1バージョンと5.2バージョンの間の矛盾が原因である可能性があります。 DSMを5.2にダウングレードすることはオプションではなく、不可能かもしれません。
sudo make headers_install
次の理由により、DiskStation の Linux 3.2.40 ソースの実行が失敗します。
$ sudo env CFLAGS="-mfloat-abi=hard -mfpu=vfpv3-d16 -I/usr/include" \ CPPFLAGS="-mfloat-abi=hard -mfpu=vfpv3-d16 -I /usr/include" \ CXXFLAGS="-mfloat-abi=hard-mfpu=vfpv3-d16 -I/usr/include"\ LDFLAGS="-mfloat-abi=hard-mfpu=vfpv3-d16" \ headers_install\を作成 CFLAGS="-mfloat-abi=hard -mfpu=vfpv3-d16 -I/usr/include" \ CPPFLAGS="-mfloat-abi=hard -mfpu=vfpv3-d16 -I /usr/include" \ CXXFLAGS="-mfloat-abi=hard-mfpu=vfpv3-d16 -I/usr/include"\ LDFLAGS="-mfloat-abi=hard-mfpu=vfpv3-d16" \ INSTALL_HDR_PATH=/usr CHKを含む/linux/version.h HOSTCCスクリプト/基本/fixdep /opt/toolchain/include/features.h:434:0 に含まれるファイルには、 /opt/toolchain/include/sys/types.h:25で、 scripts/basic/fixdep.c:106から: /opt/toolchain/include/gnu/stubs.h:7:29: 致命的なエラー: gnu/stubs-soft.h: そのファイルやディレクトリがありません。 #含める ^ コンパイルが終了します。 make[1]: *** [scripts/basic/fixdep] エラー 1 make: *** [scripts_basic]エラー2
などのその他のビルド設定binutils
が選択されており、make
問題なく含まれません。最新バージョンのLinux 3.2.xである3.2.86でも同じ問題が発生します。-mfloat-abi
gnu/stubs-soft.h
おそらくより簡単な方法があることを知っています。ほとんどの設定はクロスコンパイルと連携する必要があり、私がやろうとしている作業のユースケースはありませんが、どのように動作するのか、何ができないのかを理解したいと思います。しようとしています。