我曾尝试(使用我有限的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平台?
发布于 2016-06-21 19:00:23
也许有必要检查一下你输入的命令是否正确--特别是看看"--host=arm-angstrom-linux-gnueabi" --它应该是"--host=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编译器?
https://stackoverflow.com/questions/37926301
复制相似问题