How to compile Android 2.3 on Ubuntu 10.04 32bit

How to compile Android 2.3 on Ubuntu 10.04 32bit

官方编译环境:
Ubuntu 10.04 64bit
64-bit Sun JDK

本文编译环境:
Ubuntu 10.04 32bit
32-bit Sun JDK

参考:

http://source.android.com/source/download.html

安装java1.6

met issues
1:issue "You are attempting to build on a 32-bit system"

How to fix:
$ vim build/core/main.mk
change
ifneq (64,$(findstring 64,$(build_arch)))
to
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.)
$(warning ************************************************************)
$(error stop)
endif


external/clearsilver/cgi/Android.mk,
external/clearsilver/java-jni/Android.mk,
external/clearsilver/util/Android.mk,
external/clearsilver/cs/Android.mk

change
LOCAL_CFLAGS += -m64
LOCAL_LDFLAGS += -m64
to
LOCAL_CFLAGS += -m32
LOCAL_LDFLAGS += -m32


2:issue "host C: libclearsilver-jni <= external/clearsilver/java-jni/j_neo_util.c
In file included from /usr/include/features.h:378,
                 from /usr/include/string.h:26,
                 from external/clearsilver/java-jni/j_neo_util.c:1:
/usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 没有那个文件或目录
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libclearsilver-jni_intermediates/j_neo_util.o]错误"

How to fix:
sudo apt-get install lib64z1-dev libc6-dev-amd64 g++-multilib lib64stdc++6


3:issue:
host SharedLib: libneo_util (out/host/linux-x86/obj/lib/libneo_util.so)
/usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.3.4/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.3.4/libstdc++.a when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.3.4/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.3.4/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/lib/libneo_util.so] Error 1

How to fix:

 

4
frameworks/base/core/java/android/app/ListActivity.java:319: inconvertible types
found : android.widget.AdapterView<capture of ?>
required: android.widget.ListView
onListItemClick((ListView)parent, v, position, id);
^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

How to fix:
其实JDK的版本低了,用了1.5.0_06的版本,用1.6就可以了

5 arm-eabi-4.4.3

prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc -mthumb-interwork -Ibionic/libc/private -o out/target/product/generic/obj/lib/crtbegin_dynamic.o -c bionic/libc/arch-arm/bionic/crtbegin_dynamic.S

prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.11' not found (required by prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc)

make: *** [out/target/product/generic/obj/lib/crtbegin_dynamic.o] 错误 1

这是在32位Ubuntu上编译引起的arm-eabi-4.4.3版本问题,所以需要修改arm-eabi-4.4.0:

$ mv arm-eabi-4.4.3 to arm-eabi-4.4.3.old

$ ln -s arm-eabi-4.4.0 arm-eabi-4.4.3


Reference:
http://iopenfree.appspot.com/?p=4001
http://0123.blog.163.com/blog/static/478831201061214128901/

编译 OpenSceneGraph (OSG) for Android 需要使用交叉编译工具链(cross-compilation toolchain),可以使用 Android NDK 中提供的工具链来完成。以下是编译 OSG 的大致步骤: 1. 下载并安装 Android NDK,可以从官网下载。 2. 下载 OSG 的源代码,可以从官网下载。 3. 解压 OSG 源代码,进入源代码目录。 4. 设置环境变量,使得编译器可以找到 Android NDK 中的工具链,例如: ``` export ANDROID_NDK=$HOME/android-ndk-r10e export PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin:$PATH export CC=arm-linux-androideabi-gcc export CXX=arm-linux-androideabi-g++ ``` 其中 `$HOME/android-ndk-r10e` 是 Android NDK 的安装路径。 5. 运行 cmake 命令生成 Makefile: ``` mkdir build_android cd build_android cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ -DANDROID_ABI="armeabi-v7a" \ -DANDROID_NATIVE_API_LEVEL=android-14 \ -DCMAKE_INSTALL_PREFIX=/path/to/install/directory \ .. ``` 其中 `-DANDROID_ABI="armeabi-v7a"` 表示编译为 armeabi-v7a 架构,`-DANDROID_NATIVE_API_LEVEL=android-14` 表示使用 Android 14 的 API 级别。`-DCMAKE_INSTALL_PREFIX` 表示安装路径。 6. 运行 make 命令编译 OSG: ``` make -j4 ``` 其中 `-j4` 表示使用 4 个线程进行编译。 7. 运行 make install 命令安装 OSG: ``` make install ``` 至此,OSG 的编译就完成了。 如果需要编译 osgEarth,可以按照类似的步骤,先编译 OSG,再编译 osgEarth。在 cmake 命令中需要添加 `-DOSG_DIR=/path/to/osg/install/directory` 参数,指定 OSG 的安装路径。例如: ``` cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ -DANDROID_ABI="armeabi-v7a" \ -DANDROID_NATIVE_API_LEVEL=android-14 \ -DCMAKE_INSTALL_PREFIX=/path/to/install/directory \ -DOSG_DIR=/path/to/osg/install/directory \ .. ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值