为mips netbsd编译简单的hello-world c程序

时间:2014-06-02 00:09:16

标签: compilation mips cross-compiling netbsd

上周我一直试图建立一个可以用mips架构编译成netbsd的编译器。

我在互联网上找不到任何方法如何做到这一点。所有文档都是指将内核编译为体系结构而不是程序。

这怎么可能这么难......

主机是netbsd amd64机器

2 个答案:

答案 0 :(得分:1)

正确设置编译器。将它指向TOOLDIR中的gcc版本。在这种情况下,像mips一样 - netbsd-gcc。绝对要确保TOOLDIR在您的路径上,因此驱动程序可以找到合适的汇编程序,正确的加载程序和适当的库。

以src / bin / *中的任何一个来看看Makefile,并读取系统mk引用的文件(在src / share / mk中)

答案 1 :(得分:0)

一般来说,目标是为目标创建一个有效的交叉编译器和文件系统根目录,所有这些都安装在开发计算机上。由于您需要各种库来构建用户态应用程序,因此需要目标根。需要为目标编译这些库,而不是为主机编译。

假设您从源代码构建了所有内容,它将如下所示:

  1. 选择工具链的前缀(比如/opt/mips)和目标的根文件系统的另一个前缀(比如/opt/target)。所有这些都在您的开发机器上,而不是目标!

  2. 为目标配置,构建和安装交叉编译器。这将进入工具链前缀。

  3. 为目标配置,构建和安装内核到目标根前缀中。这应该安装以后需要的必要的内核开发头。如果你可以在不编译内核的情况下安装这样的头文件,当然还有更多权力。

  4. 为目标配置,构建和安装C库(比如glibc)到目标根目录。

  5. 配置,构建和安装userland应用程序所需的任何其他库 - 到目标根目录。

  6. 最后,配置,构建和安装userland应用程序。安装到目标根目录后,您可以将其复制到目标到相同的前缀(比如之前建议的/opt/target)。

    通常要安装到不同的前缀 - 一个与构建主机上的内容重叠的前缀(例如/usr) - 您需要做一些技巧来欺骗make install以查看目标前缀而不是你自己的。一个简单的方法是在构建主机上创建一个chroot环境,在这里你可以将前缀(例如/usr)只读,并在其上面加上可写(mount_union)叠加层。

  7. 当你为目标构建东西时,你需要将正确的参数传递给configure