Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 交叉编译NTFS-3G_Linux_Arm_Cross Compiling - Fatal编程技术网

Linux 交叉编译NTFS-3G

Linux 交叉编译NTFS-3G,linux,arm,cross-compiling,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上,结果

我尝试(使用我有限的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
当我执行
文件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
现在很明显,当我完成配置时,交叉编译器并没有注意到这一点。如果我在另一个工具(如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平台作为目标?

可能需要检查您是否正确输入了命令-特别是查看“--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编译器之一?

可能值得检查您是否正确输入了命令-特别是查看“--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编译器之一?

可能尝试检查configure.log或configure.status文件,并尝试找出它选择的编译器。奇怪的是,configure标志没有任何效果,通常configure会失败。尝试使用
configure--foo=something
查看它是否在未知标志上失败。在
config.log
中,它显示:检查arm angstrom linux gnueabi gcc结果:否。在下一行中,它显示:检查找到的gcc:/usr/bin/gccSo安装它。在Ubuntu上,只需在终端键入
arm angstrom linux gnueabi gcc
,它就会告诉您它丢失了,以及要安装哪个包来获取它。然后您需要对
检查arm angstrom linux gnueabi gcc
进行故障排除。在调试模式下运行配置文件-。查看它如何执行检查。或者在文本编辑器中打开
/configure
脚本,搜索
arm angstrom linux gnueabi gcc
,然后从那里开始。为了重现这一点,我刚刚下载了最新(2016.2.22)的NTFS-3G源代码,并与方便使用的Linaro arm linux gnueabihf工具链交叉构建了它。即使主机和目标之间存在无意义的不匹配,即使在/dev/中安装WTF前缀,我也无法阻止配置成功。因此,我只能得出结论,用技术术语来说,您的环境和/或工具链完全是胡说八道;)也许可以尝试检查configure.log或configure.status文件,并尝试找出它选择的编译器。奇怪的是,configure标志没有任何效果,通常configure会失败。尝试使用
configure--foo=something
查看它是否在未知标志上失败。在
config.log
中,它显示:检查arm angstrom linux gnueabi gcc结果:否。在下一行中,它显示:检查找到的gcc:/usr/bin/gccSo安装它。在Ubuntu上,只需在终端键入
arm angstrom linux gnueabi gcc
,它就会告诉您它丢失了,以及要安装哪个包来获取它。然后您需要对
检查arm angstrom linux gnueabi gcc
进行故障排除。在调试模式下运行配置文件-。查看它如何执行检查。或者在文本编辑器中打开
/configure
脚本,搜索
arm angstrom linux gnueabi gcc
,然后从那里开始。为了重现这一点,我刚刚下载了最新(2016.2.22)的NTFS-3G源代码,并与方便使用的Linaro arm linux gnueabihf工具链交叉构建了它。即使主机和目标之间存在无意义的不匹配,即使在/dev/中安装WTF前缀,我也无法阻止配置成功。因此,我只能得出结论,用技术术语来说,您的环境和/或工具链完全是胡说八道;)我敢肯定,在这种情况下,目标被忽略了——我甚至尝试了完全不可能的
--host=arm-linux-gnueabihf--target=aarch64-linux-gnu
,它仍然毫无怨言地大量生产出ARMv7二进制文件……是的,你是对的——我刚刚检查过,没有任何--target“指定,它仍然工作完美,所以weblar83出现问题的原因仍然是个谜!它看起来好像没有在系统根上获得支持,因为arm angstrom linux gnueabi工具链没有内置的系统根支持。我要试试其他的编译器。CheersI按照平台制造商的建议尝试了gcc linaro工具链,但是,直到“make-install”阶段,每次都无法构建所有软件包时,该工具链都能成功运行。然后我下载了arm linux gnueabihf编译器,一切都很好——还没有在我的目标硬件上尝试过这些包,但看起来一切都很好。我很确定在这种情况下,目标被忽略了——我甚至尝试了完全不可能的
--host=arm linux gnueabihf--target=aarch64 linux gnu
,但它仍然大量生产出来没有抱怨的ARMv7二进制文件…是的,你是正确的-我刚刚检查了,没有指定任何“-target”,它仍然工作得很好,所以weblar83出现问题的原因仍然是个谜!它看起来似乎不像arm angstrom linux gnueabi工具链d那样在系统根上进行升级