在ubuntu中执行
cd
cd mydroid/build/
envsetup.sh
cd ~/mydroid
cd external/libJNITest/
mm 1. 按照上面的说明,我在执行envsetup.sh时,如下错误:min@ubuntu:~/mydroid/build$ envsetup.sh
envsetup.sh:找不到命令为什么我的提示找不到命令,build下面是有envsetup.sh刚下载的完整源码。上个帖子位置:
编译jni时envsetup.sh文件是的作用
http://topic.csdn.net/u/20110312/16/d7d8ee4f-422c-4387-8e08-1a0a19b3f64c.html
2. 执行min@ubuntu:~/mydroid/external/libJNITest$ mm,提示如下:
min@ubuntu:~/mydroid$ cd external/libJNITest
min@ubuntu:~/mydroid/external/libJNITest$ ls
Android.mk  com_min_jnitest_JNITest.c  com_min_jnitest_JNITest.h
min@ubuntu:~/mydroid/external/libJNITest$ mm
/bin/bash: bison:找不到命令
============================================
PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=AOSP
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv5te
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
============================================
Checking build tools versions...
make:进入目录'/home/min/mydroid'
build/core/main.mk:76: ************************************************************
build/core/main.mk:77: You are attempting to build on a 32-bit system.
build/core/main.mk:78: Only 64-bit build environments are supported beyond froyo/2.2.
build/core/main.mk:79: ************************************************************
build/core/main.mk:80: *** stop。 停止。
make:离开目录“/home/min/mydroid”
min@ubuntu:~/mydroid/external/libJNITest$ 
min@ubuntu:~/mydroid/external/libJNITest$ cd ...
bash: cd: ...: 没有那个文件或目录是说只有64位机才能编译2.2以上版本吗?
如果真是这样岂不是悲剧了?

解决方案 »

  1.   

    1.  sh envsetup.sh  ( ./envsetup.sh)2. 不是只要64位机才可以     
       好像有分32 64位的不同版本...............
      

  2.   

    1. envsetup.sh本质来讲是一个具有可执行属性的文件,而不是一个可执行程序,所以你应该用下面的方式运行
       ./envsetup.sh 
       . envsetup.sh 
       sh envsetup.sh
       
    2. 不是只要64位机才可以的,你可以修改几个源source几个地方就能在32位机上编译的。
       请按照下面的修改步骤(-表示删除行,+表示添加行):              1、修改build/core目录下的main.mk文件,修改策略为:
                           ifeq ($(BUILD_OS),linux) 
                            build_arch := $(shell uname -m) 
                           -ifneq (64,$(findstring 64,$(build_arch))) 
                           +ifneq (i686,$(findstring i686,$(build_arch))) 
                          $(warning ************************************************************) 
                          $(warning You are attempting to build on a 32-bit system.) 
                          $(warning Only 64-bit build environments are supported beyond froyo/2.2.)              2、修改下列文件:
                           /external/clearsilver/cgi/Android .mk
                           /external/clearsilver/cs/Android .mk
                           /external/clearsilver/java-jni/Android .mk
                           /external/clearsilver/util/Android .mk
                         4个文件的修改策略相同,为:
                           # This forces a 64-bit build for Java6 
                            -LOCAL_CFLAGS += -m64 
                            -LOCAL_LDFLAGS += -m64 
                            +LOCAL_CFLAGS += -m32 
                            +LOCAL_LDFLAGS += -m32
      

  3.   

    修改了build/core/main.mk, 正在安装jdk1.5 ……
      

  4.   

    jdk1.5编译出错,又安装了jdk1.6,最后可以编译了。
    编译还没有完就睡觉了,一直开着机编译,但今天早晨起来发现自动关机了,不知道是什么原因。
    现在看,磁盘空间减少了1.5G,网上说生成的image文件放在out/target/product/generic目录下,此文件夹大小为445M.看不懂是不是正常编译完了。chmod 777 envsetup.sh后可以执行 ./envsetup.sh了,什么反馈都没有然后执行mm,提示要装两个东西,
    min@ubuntu:~/mydroid/external/libJNITest$ mm
    程序“mm”已包含在下列软件包中:
     * mountmanager
     * multimail
    请尝试:sudo apt-get install <选定的软件包>
    min@ubuntu:~/mydroid/external/libJNITest$ sudo apt-get install mountmanager
    ...min@ubuntu:~/mydroid/external/libJNITest$ sudo apt-get install multimail
    ...再执行mm命令,就弹出一个图形界面的MountManager0.2.6
    不知道该怎么办了。
    时间来不及了,晚上再回来搞……
      

  5.   

    首先, ./envsetup.sh了,确实是什么反馈都没有的。程序“mm”已包含在下列软件包中:
     * mountmanager
     * multimail这两个提示,说明你的envsetup.sh没有成功运行!
    你运行envsetup.sh和mm必须在同一个terminal中,你是不是在两个terminal中做的?还有就是运行mm时,你必须将terminal进入到主main.mk所在的目录中。mm命令会去找你当前目录下的main.mk文件的。
      

  6.   

    是在一个terminal中执行的,但不是在main.mk目录下,我是在一个自己建立的libJNITest目录下执行的,编译自己的.h, .c文件。
    按照Android Jni代码示例讲解  Android Jni使用方法步骤(7)编译生成动态库
    http://gyht0808.javaeye.com/blog/763435
    cd mydroid/build/
    envsetup.sh
    cd ~/mydroid
    cd external/libJNITest/
    mm另外,编译源码那步我不确定编译完没有,我安装了jdk1.6后在源码根目录,也就是我建立的mydroid目录下执行的make -j2来编译的,我的是T2390双核处理器。
    今晚回家再重新编译源码试试
      

  7.   

    整体m过一次后再在某个模块里mm才可以得到你想要的.so
      

  8.   

    ubuntu默认用的是dash,不是bash,先把这个配好后再操作其他的sudo dpkg-reconfigure dash然后选择No
      

  9.   

    这个要用source envsetup.sh
    另外mm mmm这些命令必须要之前完整编译过一次后才能用
      

  10.   

    再执行mm命令,就弹出一个图形界面的MountManager0.2.6
    我也弹出这个了怎么去掉哦?
      

  11.   

    这个图形界面是mount挂载管理器,应该不是一回事。