玩安卓吧 关注:2,392贴子:9,888

【测试】Android本地编译QEMU6.0.0

只看楼主收藏回复

工具链是自己整的,有约15‰的Termux成分


IP属地:山东来自Android客户端1楼2021-06-26 00:46回复
    STEP 0=>
    至www.qemu.org下载源码


    IP属地:山东来自Android客户端2楼2021-06-26 00:50
    回复
      简要介绍我的工具包来历:
      使用来自QPython的python3.6,c4droid编译出第一代clang
      第一代clang编译出make libbz2 liblzma libiconv libncurses libintl .......
      用Termux的OpenSSL、Glib启动整个循环
      编译出Python3.8、cmake
      至此Python-Clang-CMake成自举之势
      然后编译perl,从termux拿ninja
      OpenSSL与Glib
      整套体系成自举之势(除了来自termux并修改过的m4与ninja)
      然后现在举到第6代了
      clang12+llvm-binutils12+Meson(Python3.9)+ninja1.9+perl5.34+make4.3+cmake3.20+pkg-config0.29是本次的工具
      libiconv+libintl+glib2.68.3+libzstd+libjpeg+libpng+libc++(NDK)是本次所用库


      IP属地:山东来自Android客户端3楼2021-06-26 01:02
      回复
        STEP 1=>
        解压源码包!
        图中使用MT管理器的MTerm终端。
        /data/data/bin.mt.plus是MT管理器数据目录,故对其子目录有访问权。
        p.s. MT管理器可以认为是带终端模拟器的文件管理器,也可以认为是带文件管理功能的终端。有内置bash!


        IP属地:山东来自Android客户端4楼2021-06-26 01:10
        回复
          STEP 2 =>
          对源码进行一些小修改:
          在 qga/commands-posix.c tests/qtest/ivshmem-test.c
          contrib/ivshmem-server/ivshmem-server.c
          中删去 *ifaddrs() shm_*() 的调用
          在 audio/ossaudio.c 中 #include <sys/soundcard.h>
          改为 #include <linux/soundcard.h>
          在 stdlib.h 中:
          #include <malloc.h> 改为 #include "malloc.h"


          IP属地:山东来自Android客户端5楼2021-06-26 01:13
          回复
            *ifaddrs()系列函数也可以不删,
            在CMake的源码包中可以找到android-ifaddrs.c(h),对其修改(uv__malloc()改malloc()啥的)后将其全部内容复制粘贴到对应文件中即可


            IP属地:山东来自Android客户端6楼2021-06-26 01:17
            回复







              IP属地:山东来自Android客户端7楼2021-06-26 01:26
              收起回复



                IP属地:山东来自Android客户端8楼2021-06-26 01:35
                收起回复
                  STEP 4 =>
                  执行命令!


                  IP属地:山东来自Android客户端10楼2021-06-26 01:48
                  回复


                    IP属地:山东来自Android客户端11楼2021-06-26 01:49
                    回复
                      发现新情况!调用到了缺失函数!
                      我们依原则:
                      1. 确定不是项目内
                      2. 修改代码,使其运行时报错


                      IP属地:山东来自Android客户端12楼2021-06-26 02:03
                      回复


                        IP属地:山东来自Android客户端13楼2021-06-26 02:13
                        回复
                          完事


                          IP属地:山东来自Android客户端14楼2021-06-26 02:27
                          回复
                            大家可以试用一下
                            希望能得知快了还是慢了
                            或者缺什么feature
                            链接:网页链接提取码:i367


                            IP属地:山东来自Android客户端15楼2021-06-26 02:48
                            回复
                              关于Root,我想说的是
                              不影响QEMU运行
                              但绝对影响体验(除非有什么其它稳定挂后台并保持系统性能分配的方法)
                              所以测试靠大家了
                              系统要求 Android6+ AArch64


                              IP属地:山东来自Android客户端16楼2021-06-26 02:53
                              回复