将ELF ARM可执行文件转换为uClinux的BFLT可执行文件

将ELF ARM可执行文件转换为uClinux的BFLT可执行文件,arm,embedded,cross-compiling,firmware,uclinux,Arm,Embedded,Cross Compiling,Firmware,Uclinux,我有一个小问题: 我需要向固件添加一个程序,该程序将用于我办公室的嵌入式IP摄像头。它的CPU是一个ARM7TDMI。这么说来,我在Debian x64机器上交叉编译了我的程序,得到了我的ELF可执行文件: stunnel: ELF 32-bit MSB executable, ARM, EABI5 BE8 version 1 (SYSV), statically linked, stripped 但是相机上的uClinux只执行BFLT二进制文件!! Down是我从中提取的一个程序的示例:

我有一个小问题:

我需要向固件添加一个程序,该程序将用于我办公室的嵌入式IP摄像头。它的CPU是一个ARM7TDMI。这么说来,我在Debian x64机器上交叉编译了我的程序,得到了我的ELF可执行文件:

stunnel: ELF 32-bit MSB executable, ARM, EABI5 BE8 version 1 (SYSV), statically linked, stripped
但是相机上的uClinux只执行BFLT二进制文件!! Down是我从中提取的一个程序的示例:

camera: BFLT executable - version 4 ram gzip
我需要把我的ELF二进制文件转换成BFLT。我找到了elf2flt工具,但我无法编译它,你知道有什么更简单的方法将我的二进制文件转换成BFLT吗?或者我需要另一个交叉编译器来直接编译它


感谢您提供的任何相关答案

IIRC elf2flt就是这样做的,因此您可能需要对其进行编译。通常,如果为目标构建系统映像,它将由uClinux构建过程自动构建;可能有一种方法可以让它只构建一个工具链,或者在您看到已经构建的工具链之后停止它。您还可以获得一个预构建的工具链包,甚至是一个已经设置了工具链的VM。即使你被认为是静态链接的,也要准备好发现除此之外的问题。@chrisstratton谢谢你的回答。按照您的建议,我下载了crosstool ng并构建了armv6 nommu linux uclibcgnueabi工具链,它为我提供了elf2flt!但正如你所说,当我尝试将其应用于二进制文件时,我遇到了一个问题:./armv6-nommu-linux-uclibcgnueabi-elf2flt:./stunnel:输入文件不包含重定位信息它开始变得一团糟,因为我的ARM和uclinux不支持共享库,所以我必须使用静态链接,但我不知道如何在我的应用程序中添加这些重定位信息精灵。如果你有我应该遵循的方向。。。再次感谢您,您可能需要扔掉当前的二进制文件,仅使用您构建的uClinux工具链从源代码中重新构建。IIRC elf2flt就是这样做的,因此您可能需要编译它。通常,如果为目标构建系统映像,它将由uClinux构建过程自动构建;可能有一种方法可以让它只构建一个工具链,或者在您看到已经构建的工具链之后停止它。您还可以获得一个预构建的工具链包,甚至是一个已经设置了工具链的VM。即使你被认为是静态链接的,也要准备好发现除此之外的问题。@chrisstratton谢谢你的回答。按照您的建议,我下载了crosstool ng并构建了armv6 nommu linux uclibcgnueabi工具链,它为我提供了elf2flt!但正如你所说,当我尝试将其应用于二进制文件时,我遇到了一个问题:./armv6-nommu-linux-uclibcgnueabi-elf2flt:./stunnel:输入文件不包含重定位信息它开始变得一团糟,因为我的ARM和uclinux不支持共享库,所以我必须使用静态链接,但我不知道如何在我的应用程序中添加这些重定位信息精灵。如果你有我应该遵循的方向。。。再次感谢您,您可能需要扔掉当前的二进制文件,仅使用您构建的uClinux工具链从源代码中重建。