5

我正在尝试为 MIPS 静态交叉编译 Mono。我能够编译 Mono,但它总是与它的依赖项动态链接,即使我为编译器指定了静态。

我写了一个测试程序,我可以用我的工具链静态编译它并在目标平台上运行它。我不确定我是否遗漏了某些东西,或者这是不可能的。我使用buildroot构建了我的工具链。

编辑

为了让事情更清楚一点,我想用它的依赖项静态编译单声道。mono 依赖的依赖项是:GLib、pkg-config 和 gettext。我相信 GLib 是一个直接依赖项,而 GLib 依赖于 pkg-config 和 gettext。

如果需要,我可以发布我的环境变量和配置命令。

4

3 回答 3

1

为了获得完全静态链接的 Mono,您必须首先将其所有依赖项(及其递归依赖项)构建为静态库。只有这样你才能构建一个真正静态的 Mono。

于 2009-04-22T20:05:06.777 回答
1

好吧,自从我尝试这个已经有一段时间了,但我想报告我学到的东西。一方面,我发现 MIPS 处理器是 64 位的,而不是 32 位的,就像我最初告诉我的目标嵌入式设备一样。其次,当我研究这个时,Mono 还没有 MIPS 64 位支持。经过一番研究,我看到N-iX的一个小组正在移植 Mono 以支持基于已经完成的 32 位端口的 MIPS 64 位架构。64 位端口正在为一家名为SiCortex, Inc.的公司完成,N-iX 正试图将他们的补丁应用到主要的 Mono 开发主干。您可以查看此论坛主题以获取更多信息。我发帖说我想帮助测试,但我从来没有得到回应。

至于静态编译 Mono,我了解到 Mono 使用libtool将其库链接在一起。在尝试静态编译之前,我需要了解有关此工具的更多信息。在得知 Mono 还不支持 MIPS 64 位后,我停下了脚步。我还需要查看 64 位端口补丁是否曾经应用于 Mono。

我希望这有帮助。

于 2009-07-22T13:16:16.720 回答
0

在最近的一个 stackoverflow 播客中,Miguel 说他们将 Mono 移植到 iPhone,我认为使用了很多静态。虽然不是 64 位,但它表明可以对 Mono 做一些讨厌的事情。

于 2009-09-08T11:10:41.507 回答