如何为x86 Android交叉编译Mono

3

我尝试了很多不同的方法。我使用NDK完成了编译,但是当我在模拟器上运行时,使用adp shell命令,没有输出。

我使用tarball中的mono-3.10.0

这是我的环境变量:

export CC=i686-linux-android-gcc
export SYSROOT=/home/XXUSERNAMEXX/Develop/android-ndk-r10d/platform/android-17/arch-x86
export PATH=/tmp/my-android-toolchain/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

以下是我的配置:

 ./configure --disable-mcs-build --host=i686-linux-android --prefix=/home/XXUSERNAMEXX/vmshare/workspace/HelloJni/jni/mono-2.0 --target=i686-linux-android --build=i686-linux-gnu

然后只需执行以下命令:

make
make install

接着,编写一个简单的 C# 示例:

// HelloAndroid.cs
// 输出 HelloAndroid.exe
using System;

namespace HelloAndroid
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            Console.WriteLine ("Hello World!");
        }
    }
}

然后我将 mono-sgen、libmonosgen-2.0.so和 HelloAndroid.exe 复制到安卓目录中。

/data/data/com.example.helloandroid

将所有权限更改为755

将所有所有权更改为system:system

然后在ADP shell中输入

./mono-sgen HelloAndroid.exe

然后我什么都没有得到。 没有错误,没有输出,只有命令行返回

1个回答

0

您需要像为常规主机编译 .NET 程序集(System.dll ...),并将它们放入 Android 中。

此外,定义 MONO_PATH 以运行 Mono 运行时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接