如何为带有 DSM 5.1 的 Synology DS 214 构建 crosstool-ng 工具链?

如何为带有 DSM 5.1 的 Synology DS 214 构建 crosstool-ng 工具链?

我正在尝试构建一个gcc4.6,它“恰好”可以在带有 DSM 5.1 的 Synology DS214 上运行(Synology OS 实际上是过时的 Linux 3.2.x),ie 允许我在机器上编译应用程序。我在使用以下两个交叉编译的 gcc 中遇到了同样的问题:

env CC=/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-gcc \
LD=/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-ld \
RANLIB=/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-ranlib \
AR=/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-ar \
CFLAGS=" -I/usr/local/arm-marvell-linux-gnueabi/arm-marvell-linux-gnueabi/libc/include -mhard-float -mfpu=vfpv3-d16" \
LDFLAGS=" -L/usr/local/arm-marvell-linux-gnueabi/arm-marvell-linux-gnueabi/libc/lib" \
auto-apt run ./configure --host=arm-marvell-linux --target=arm-marvell-linux \
--prefix=$USER/syno-prefix --disable-shared --enable-obsolete
make 
make install

Synology 工具链armadaxp在 Ubuntu 14.10 amd64 上以及CPU的推荐参数和crosstools-ng项目现场) 工具链与eglibc2.18、4.6.4 gcc、linux3.2.40architecture-levelsarmv7-aarmadaxp(后者不起作用,错误“未知 arch”)和 CPU 调整cortex-a9CFLAGS -mhard-float -mfpu=vfpv3-d16"因为经过数小时的搜索,关于必要架构参数的唯一提示是如何在带有 armv7l 的 MyCloud 设备上编译传输的指南

交叉编译gcc和工具链都会导致错误

/usr/local/bin/ld: unrecognised emulation mode: armelf_linux_eabi
Supported emulations: armelf_linux armelf armelfb armelfb_linux
collect2: ld returned 1 exit status

(在 中config.log)在编译例如binutils2.24 和trafficserver5.1.0 时(LDFLAGS=" -marmelf_linux"在 configure 之前添加会导致cc1: error: unrecognized command line option '-marmelf_linux')。错误似乎是系统性的。如何开始找出一般工具链参数和特定于指定设备的硬件特定参数?

gcc关于应该运行的目标的一些信息:

# cat /proc/cpuinfo 
Processor   : Marvell PJ4Bv7 Processor rev 2 (v7l)
processor   : 0
BogoMIPS    : 1064.96

processor   : 1
BogoMIPS    : 1064.96

Features    : swp half thumb fastmult vfp edsp vfpv3 tls 
CPU implementer : 0x56
CPU architecture: 7
CPU variant : 0x2
CPU part    : 0x584
CPU revision    : 2

Hardware    : Marvell Armada XP Development Board
Revision    : 0000
Serial      : 0000000000000000

我尝试从阅读有关 ARM 和浮点单元的资料(主要是维基百科)开始,但为了猜测哪些参数是必要的,对于初学者来说需要花费很多时间。

编辑1:我刚刚发现将选项设置Toolchain typeCanadian而不是会更好Cross,但我仍然crosstools-ng需要machine设置选项(出现错误Invalid configuration `': machine `' not recognized),这让我回到了缺乏有关 CPU 和架构细节知识的问题——当然没有办法弄清楚“机器”实际上指的是什么……

相关内容