我尝试(使用我有限的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平台?
答案 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编译器?