Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.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上对configure使用不同的工具链_Linux_Gcc_Arm_Toolchain - Fatal编程技术网

在Linux上对configure使用不同的工具链

在Linux上对configure使用不同的工具链,linux,gcc,arm,toolchain,Linux,Gcc,Arm,Toolchain,我的目标系统(arm)的工具链已正确安装在$toolchain ls$TOOLCHAIN的输出是:bin debug root include lib32 lib64 sysroot bin/*的内容没有前缀,即gcc、g++、as、 现在,我有一个应用程序的源代码发行版,我想用给定的工具链为这个目标系统编译它。源发行版有一个配置脚本 如何做到这一点?提前感谢。构建交叉编译器/binutils通常非常困难,而且不允许您测试程序。 虚拟机的速度非常慢,并且会造成很强的分离,这使得主机和虚拟机之间很

我的目标系统(arm)的工具链已正确安装在$toolchain

ls$TOOLCHAIN
的输出是:
bin debug root include lib32 lib64 sysroot

bin/*的内容没有前缀,即gcc、g++、as、

现在,我有一个应用程序的源代码发行版,我想用给定的工具链为这个目标系统编译它。源发行版有一个配置脚本


如何做到这一点?提前感谢。

构建交叉编译器/binutils通常非常困难,而且不允许您测试程序。
虚拟机的速度非常慢,并且会造成很强的分离,这使得主机和虚拟机之间很难共享文件

最简单的解决方案是:系统调用和指令以用户模式包装到本机内核

下载或解压缩rootfs

  • 将其复制到实际根目录的子文件夹中
  • 将qemu user-(mips arch的名称)-static复制到目标目录的根目录
  • 正确绑定挂载所有内容
  • 将/etc/resolv.conf复制到/your_path_到_target/etc/resolv.conf
  • 通过执行/bin/bash来启动它
  • 使用rootfs就像使用真正的基于mips的机器一样

事情变得非常简单:许多库由于硬编码路径之类的原因而无法编译(您将面临许多问题,比如交叉编译的问题,这是一个典型的例子)。在这里,所有这些都发生在您以本机方式构建包时,您必须键入
/configure

典型的交叉配置至少需要
/configure--host=arm-linux--build=x86-linux
或类似的内容。通常需要设置许多其他程序和定义;您可能需要指定一个包。包可能需要在构建机器上编译程序,也需要为最终目标编译程序。