交叉编译NTFS-3G

时间:2016-06-20 15:27:55

标签: linux arm cross-compiling

我尝试(使用我有限的Linux技能组)交叉编译运行在ARMv7平台上的Angstrom Linux的NTFS-3G驱动程序。

我尝试了以下configure认为它有效:

./configure --target=arm-angstrom-linux-gnueabihf --host=arm-angstrom-linux-gnueabi --prefix=/dev/build_ntfs
make
sudo make install

然后我将生成的安装复制到我的嵌入式平台的rootfs上,发现当我执行使用NTFS-3G构建的工具之一时,我收到以下错误:

ntfsls: cannot execute binary file: Exec format error

当我file ntfsls时,它会回来:

ntfsls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically
linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24,
BuildID[sha1]=4eeb3c06c20046bedf70df6c774e32ddc89c097c, not stripped

现在很明显,当我完成配置时,它还没有在交叉编译器上获得。如果我在其他工具上尝试file,例如minicom:

file minicom

结果是:

minicom: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically
linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32,
BuildID[sha1]=85d16f083bb06935bff73c248341a8d5fe22cdab, stripped

这显然是为ARM构建的。

我的问题是,我在哪个步骤中未能锁定ARM平台?

1 个答案:

答案 0 :(得分:0)

可能值得检查您是否正确输入了命令 - 具体来看“ - host = arm-angstrom-linux-gnueabi” - 应该是“ - 主机= arm-angstrom-linux-gnueabihf“(注意”hf“在编译时支持硬件浮点支持的ARM芯片)?

只是为了验证我已经尝试过这个命令

glen@gw2:~/tmp/ntfs-3g_ntfsprogs-2016.2.22$ ./configure --target=arm-linux-gnueabihf --host=arm-linux-gnueabihf --prefix=$HOME/tmp/test

完美无缺并创建了ARM二进制文件:

glen@gw2:~/tmp/ntfs-3g_ntfsprogs-2016.2.22$ file ../test/lib/libntfs-3g.so.87.0.0
 ../test/lib/libntfs-3g.so.87.0.0: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=334b6214d2d68655d9dfd3bc518da927d9f1fa01, not stripped

如果你不能让Ångström编译器工作 - 也许可以尝试其他一个ARM编译器?

相关问题