由于我厌倦了交叉编译,并且已经gcc
在我的 Synology DiskStation DS214 上使用 DSM 6.1 进行了工作(交叉编译),因此我想安装在 DiskStation 上运行的 Linux 版本的 Linux 标头,/usr/include
该标头最初是空的。有一个Synology 为开发者提供的 takekit,但是/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 =硬-mfpu = vfpv3-d16 -I / usr / include”\ LDFLAGS="-mfloat-abi=硬-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 =硬-mfpu = vfpv3-d16 -I / usr / include”\ LDFLAGS="-mfloat-abi=硬-mfpu=vfpv3-d16" \ INSTALL_HDR_PATH=/usr CHK include/linux/version.h HOSTCC 脚本/基本/fixdep 在 /opt/toolchain/include/features.h:434:0 包含的文件中, 来自/opt/toolchain/include/sys/types.h:25, 来自脚本/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
我知道可能有一种更简单的方法,该设置应该主要与交叉编译一起工作,并且我想做的事情没有用例,但我想了解事情是如何工作的或者为什么不可能做我想做的事。