My ubuntu-9.04is 32-bits system,and android-gingerbread need 64-bits system to build it,soI modified the build system in build to void this issue, if your system is 64-bits, you will not meet this issue.
build/core/main.mk
change
ifneq (64,$(findstring 64,$(build_arch)))
to
ifneq (i686,$(findstring i686,$(build_arch)))
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
1、
build/core/base_rules.mk:76: *
build/core/base_rules.mk:77: * Each module must use a LOCAL_MODULE_TAGS in its
build/core/base_rules.mk:78: * Android.mk. Possible tags declared by a module:
build/core/base_rules.mk:79: *
build/core/base_rules.mk:80: * optional, debug, eng, tests, samples
build/core/base_rules.mk:81: *
build/core/base_rules.mk:82: * If the module is expected to be in all builds
build/core/base_rules.mk:83: * of a product, then it should use the
build/core/base_rules.mk:84: * “optional” tag:
build/core/base_rules.mk:85: *
build/core/base_rules.mk:86: * Add “LOCAL_MODULE_TAGS := optional” in the
build/core/base_rules.mk:87: * Android.mk for the affected module, and add
build/core/base_rules.mk:88: * the LOCAL_MODULE value for that component
build/core/base_rules.mk:89: * into the PRODUCT_PACKAGES section of product
build/core/base_rules.mk:90: * makefile(s) where it’s necessary, if
build/core/base_rules.mk:91: * appropriate.
build/core/base_rules.mk:92: *
build/core/base_rules.mk:93: * If the component should be in EVERY build of ALL
build/core/base_rules.mk:94: * products, then add its LOCAL_MODULE value to the
build/core/base_rules.mk:95: * PRODUCT_PACKAGES section of
build/core/base_rules.mk:96: * build/target/product/core.mk
build/core/base_rules.mk:97: *
build/core/base_rules.mk:98: *** user tag detected on new module – user tags are only supported on legacy modules. Stop
add LOCAL_MODULE_TAGS := optional in Android.mk where the error happens
2、
target thumb C: dalvikvm <= dalvik/dalvikvm/Main.c
In file included from dalvik/dalvikvm/Main.c:22:
bionic/libc/include/stdio.h:78: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘fpos_t’
bionic/libc/include/stdio.h:132: error: expected specifier-qualifier-list before ‘fpos_t’
bionic/libc/include/stdio.h:230: error: expected declaration specifiers or ‘…’ before ‘fpos_t’
bionic/libc/include/stdio.h:240: error: expected declaration specifiers or ‘…’ before ‘off_t’
bionic/libc/include/stdio.h:241: warning: type defaults to ‘int’ in declaration of ‘fpos_t’
bionic/libc/include/stdio.h:241: error: expected ‘;’, ‘,’ or ‘)’ before ‘*’ token
bionic/libc/include/stdio.h:243: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ftello’
bionic/libc/include/stdio.h:363: error: expected declaration specifiers or ‘…’ before ‘fpos_t’
make: *** [out/target/product/myx86/obj/EXECUTABLES/dalvikvm_intermediates/Main.o] Error 11
change bionic branch to rools_r9
$git checkout –b tools_r9 **/tools_r9
3、
target thumb C++: libutils <= frameworks/base/libs/utils/Asset.cpp
In file included from frameworks/base/include/utils/ZipFileRO.h:35,
from frameworks/base/libs/utils/Asset.cpp:29:
frameworks/base/include/utils/threads.h:345: error: ‘pthread_rwlock_t’ does not name a type
frameworks/base/include/utils/threads.h: In constructor ‘android::RWLock::RWLock()’:
frameworks/base/include/utils/threads.h:349: error: ‘mRWLock’ was not declared in this scope
frameworks/base/include/utils/threads.h:349: error: ‘pthread_rwlock_init’ was not declared in this scope
frameworks/base/include/utils/threads.h: In constructor ‘android::RWLock::RWLock(const char*)’:
frameworks/base/include/utils/threads.h:352: error: ‘mRWLock’ was not declared in this scope
frameworks/base/include/utils/threads.h:352: error: ‘pthread_rwlock_init’ was not declared in this scope
frameworks/base/include/utils/threads.h: In constructor ‘android::RWLock::RWLock(int, const char*)’:
frameworks/base/include/utils/threads.h:356: error: ‘pthread_rwlockattr_t’ was not declared in this scope
frameworks/base/include/utils/threads.h:356: error: expected `;’ before ‘attr’
frameworks/base/include/utils/threads.h:357: error: ‘attr’ was not declared in this scope
frameworks/base/include/utils/threads.h:357: error: ‘pthread_rwlockattr_init’ was not declared in this scope
frameworks/base/include/utils/threads.h:358: error: ‘pthread_rwlockattr_setpshared’ was not declared in this scope
frameworks/base/include/utils/threads.h:359: error: ‘mRWLock’ was not declared in this scope
frameworks/base/include/utils/threads.h:359: error: ‘pthread_rwlock_init’ was not declared in this scope
frameworks/base/include/utils/threads.h:360: error: ‘pthread_rwlockattr_destroy’ was not declared in this scope
frameworks/base/include/utils/threads.h:362: error: ‘mRWLock’ was not declared in this scope
frameworks/base/include/utils/threads.h:362: error: ‘pthread_rwlock_init’ was not declared in this scope
frameworks/base/include/utils/threads.h: In destructor ‘android::RWLock::~RWLock()’:
frameworks/base/include/utils/threads.h:366: error: ‘mRWLock’ was not declared in this scope
frameworks/base/include/utils/threads.h:366: error: ‘pthread_rwlock_destroy’ was not declared in this scope
frameworks/base/include/utils/threads.h: In member function ‘android::status_t android::RWLock::readLock()’:
frameworks/base/include/utils/threads.h:369: error: ‘mRWLock’ was not declared in this scope
frameworks/base/include/utils/threads.h:369: error: ‘pthread_rwlock_rdlock’ was not declared in this scope
frameworks/base/include/utils/threads.h: In member function ‘android::status_t android::RWLock::tryReadLock()’:
frameworks/base/include/utils/threads.h:372: error: ‘mRWLock’ was not declared in this scope
frameworks/base/include/utils/threads.h:372: error: ‘pthread_rwlock_tryrdlock’ was not declared in this scope
frameworks/base/include/utils/threads.h: In member function ‘android::status_t android::RWLock::writeLock()’:
frameworks/base/include/utils/threads.h:375: error: ‘mRWLock’ was not declared in this scope
frameworks/base/include/utils/threads.h:375: error: ‘pthread_rwlock_wrlock’ was not declared in this scope
frameworks/base/include/utils/threads.h: In member function ‘android::status_t android::RWLock::tryWriteLock()’:
frameworks/base/include/utils/threads.h:378: error: ‘mRWLock’ was not declared in this scope
frameworks/base/include/utils/threads.h:378: error: ‘pthread_rwlock_trywrlock’ was not declared in this scope
frameworks/base/include/utils/threads.h: In member function ‘void android::RWLock::unlock()’:
frameworks/base/include/utils/threads.h:381: error: ‘mRWLock’ was not declared in this scope
frameworks/base/include/utils/threads.h:381: error: ‘pthread_rwlock_unlock’ was not declared in this scope
make: *** [out/target/product/myx86/obj/SHARED_LIBRARIES/libutils_intermediates/Asset.o] Error 1
apply the patch “Add pthread_rwlock_t implementation to the C library” which we can get from bionic gingerbread branch
4、
external/stlport/src/num_put_float.cpp: In function ‘bool std::priv::_Stl_is_nan_or_inf(double)’:
external/stlport/src/num_put_float.cpp:143: error: ‘IsNANorINF’ was not declared in this scope
external/stlport/src/num_put_float.cpp: In function ‘bool std::priv::_Stl_is_inf(double)’:
external/stlport/src/num_put_float.cpp:144: error: ‘IsNANorINF’ was not declared in this scope
external/stlport/src/num_put_float.cpp:144: error: ‘IsINF’ was not declared in this scope
external/stlport/src/num_put_float.cpp: In function ‘bool std::priv::_Stl_is_neg_inf(double)’:
external/stlport/src/num_put_float.cpp:145: error: ‘IsINF’ was not declared in this scope
external/stlport/src/num_put_float.cpp: In function ‘bool std::priv::_Stl_is_neg_nan(double)’:
external/stlport/src/num_put_float.cpp:146: error: ‘IsNegNAN’ was not declared in this scope
external/stlport/src/num_put_float.cpp: In function ‘char* std::priv::_Stl_ecvtR(double, int, int*, int*, char*)’:
external/stlport/src/num_put_float.cpp:280: error: ‘ecvt_r’ was not declared in this scope
external/stlport/src/num_put_float.cpp: In function ‘char* std::priv::_Stl_fcvtR(double, int, int*, int*, char*)’:
external/stlport/src/num_put_float.cpp:282: error: ‘fcvt_r’ was not declared in this scope
external/stlport/src/num_put_float.cpp: In function ‘char* std::priv::_Stl_ecvtR(long double, int, int*, int*, char*)’:
external/stlport/src/num_put_float.cpp:285: error: ‘qecvt_r’ was not declared in this scope
external/stlport/src/num_put_float.cpp: In function ‘char* std::priv::_Stl_fcvtR(long double, int, int*, int*, char*)’:
external/stlport/src/num_put_float.cpp:287: error: ‘qfcvt_r’ was not declared in this scope
make: *** [out/target/product/myx86/obj/SHARED_LIBRARIES/libstlport_intermediates/src/num_put_float.o] Error
external/stlport/Android.mk
change
libstlport_cflags := -D_GNU_SOURCE
to
libstlport_cflags := -D_GNU_SOURCE -DUSE_SPRINTF_INSTEAD
5、
target arm C: libvorbisidec <= external/tremolo/Tremolo/bitwise.c
In file included from external/tremolo/Tremolo/bitwise.c:43:
external/tremolo/Tremolo/misc.h:82: error: redefinition of ‘union magic’
make: *** [out/target/product/myx86/obj/SHARED_LIBRARIES/libvorbisidec_intermediates/Tremolo/bitwise.o] Error 1
add header file endian.h in external/tremolo/Tremolo/misc.h
#include <endian.h>
6、
target thumb C: toolbox <= system/core/toolbox/lsof.c
system/core/toolbox/lsof.c:48: error: ‘PATH_MAX’ undeclared here (not in a function)
make: *** [out/target/product/myx86/obj/EXECUTABLES/toolbox_intermediates/lsof.o] Error 1
define PATH_MAX in system/core/toolbox/lsof.c
#ifndef PATH_MAX
#define PATH_MAX 4096
#endif
7、
target thumb C: dnsmasq <= external/dnsmasq/src/dbus.c
external/dnsmasq/src/dbus.c:21:23: error: dbus/dbus.h: No such file or directory
undefine HAVE_DBUS in external/dnsmasq/src/config.h
#ifdef __ANDROID__
#undef HAVE_DBUS
#endif
8、
target StaticLib: libOpenSLESUT (out/target/product/myx86/obj/STATIC_LIBRARIES/libOpenSLESUT_intermediates/libOpenSLESUT.a)
target SharedLib: libOpenSLES (out/target/product/myx86/obj/SHARED_LIBRARIES/libOpenSLES_intermediates/LINKED/libOpenSLES.so)
out/target/product/myx86/obj/SHARED_LIBRARIES/libOpenSLES_intermediates/IAndroidEffect.o:(.data.rel.ro._ZTIN7android12SortedVectorINS_16key_value_pair_tImPNS_11AudioEffectEEEEE[typeinfo for android::SortedVector<android::key_value_pair_t<unsigned long, android::AudioEffect*> >]+0×0): undefined reference to `vtable for __cxxabiv1::__vmi_class_type_info’
out/target/product/myx86/obj/SHARED_LIBRARIES/libOpenSLES_intermediates/IAndroidEffect.o:(.data.rel.ro._ZTIN7android12SortedVectorINS_16key_value_pair_tImPNS_11AudioEffectEEEEE[typeinfo for android::SortedVector<android::key_value_pair_t<unsigned long, android::AudioEffect*> >]+0×10): undefined reference to `typeinfo for android::SortedVectorImpl’
collect2: ld returned 1 exit status
change system/media/opensles/libopensles/IAndroidEffect.c to IAndroidEffect.cpp
$mv IAndroidEffect.c IAndroidEffect.cpp
Android.mk
change
IAndroidEffect.c
to
IAndroidEffect.cpp
9、
target thumb C: libmincrypt <= system/core/libmincrypt/sha.c
system/core/libmincrypt/sha.c: In function ‘SHA1_Transform’:
system/core/libmincrypt/sha.c:69: error: ‘u_int32_t’ undeclared (first use in this function)
system/core/libmincrypt/sha.c:69: error: (Each undeclared identifier is reported only once
system/core/libmincrypt/sha.c:69: error: for each function it appears in.)
system/core/libmincrypt/sha.c:69: error: expected ‘;’ before ‘__swap32md_x’
system/core/libmincrypt/sha.c:69: error: ‘__swap32md_x’ undeclared (first use in this function)
system/core/libmincrypt/sha.c:70: error: expected ‘;’ before ‘__swap32md_x’
system/core/libmincrypt/sha.c:71: error: expected ‘;’ before ‘__swap32md_x’
system/core/libmincrypt/sha.c:72: error: expected ‘;’ before ‘__swap32md_x’
system/core/libmincrypt/sha.c:73: error: expected ‘;’ before ‘__swap32md_x’
system/core/libmincrypt/sha.c:75: error: expected ‘;’ before ‘__swap32md_x’
system/core/libmincrypt/sha.c: In function ‘SHA_update’:
system/core/libmincrypt/sha.c:153: warning: comparison between signed and unsigned
system/core/libmincrypt/sha.c:154: warning: implicit declaration of function ‘memcpy’
system/core/libmincrypt/sha.c:154: warning: incompatible implicit declaration of built-in function ‘memcpy’
system/core/libmincrypt/sha.c: In function ‘SHA_final’:
system/core/libmincrypt/sha.c:185: error: ‘u_int32_t’ undeclared (first use in this function)
system/core/libmincrypt/sha.c:185: error: expected ‘;’ before ‘__swap32md_x’
system/core/libmincrypt/sha.c:185: error: ‘__swap32md_x’ undeclared (first use in this function)
make: *** [out/target/product/myx86/obj/STATIC_LIBRARIES/libmincrypt_intermediates/sha.o] Error 1
bionic/libc/include/byteswap.h
change
#include <endian.h>
to
#include <sys/endian.h>
10、
target arm C: libnfc <= external/libnfc-nxp/src/phLibNfc.c
cc1: error: unrecognized command line option “-mapcs”
cc1: error: unrecognized command line option “-mno-sched-prolog”
cc1: error: unrecognized command line option “-mabi=aapcs-linux”
cc1: error: unrecognized command line option “-mno-thumb-interwork”
make: *** [out/target/product/myx86/obj/SHARED_LIBRARIES/libnfc_intermediates/src/phLibNfc.o] Error 1
remove these LOCAL_CFLAGS commands in Android.mk
change
LOCAL_CFLAGS += -DNXP_MESSAGING -DINCLUDE_DALINIT_DEINIT -pipe -fomit-frame-pointer -Wall -Wno-trigraphs -Werror-implicit-function-declaration -fno-strict-aliasing -mapcs -mno-sched-prolog -mabi=aapcs-linux -mno-thumb-interwork -msoft-float -Uarm -fno-common –fpic
to
LOCAL_CFLAGS += -DNXP_MESSAGING -DINCLUDE_DALINIT_DEINIT -pipe -fomit-frame-pointer -Wall -Wno-trigraphs -Werror-implicit-function-declaration -fno-strict-aliasing -msoft-float -Uarm -fno-common -fpic
11、
external/libnfc-nxp/Linux_x86/phDal4Nfc_i2c.c:43:25: error: linux/pn544.h: No such file or directory
external/libnfc-nxp/Linux_x86/phDal4Nfc_i2c.c: In function ‘phDal4Nfc_i2c_reset’:
external/libnfc-nxp/Linux_x86/phDal4Nfc_i2c.c:248: error: ‘PN544_SET_PWR’ undeclared (first use in this function)
external/libnfc-nxp/Linux_x86/phDal4Nfc_i2c.c:248: error: (Each undeclared identifier is reported only once
external/libnfc-nxp/Linux_x86/phDal4Nfc_i2c.c:248: error: for each function it appears in.)
make: *** [out/target/product/myx86/obj/SHARED_LIBRARIES/libnfc_intermediates/Linux_x86/phDal4Nfc_i2c.o] Error 1
Add pn544.h header file to bionic/libc/kernel/common/linux, the pn544.h is in bionic tools_r9 branch
12、
Target userdata fs image: out/target/product/myx86/userdata.img
Install: out/host/linux-x86/lib/libneo_cgi.so
in mkuserimg.sh PATH=out/host/linux-x86/bin/:/home/asus/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/asus/bin
Only ext4 is supported!
make: *** [out/target/product/myx86/userdata.img] Error 3
make: *** Waiting for unfinished jobs….
define TARGET_USERIMAGES_USE_EXT4 := true in your product’s BoardConfig.mk
13、
Target system fs image: out/target/product/myx86/obj/PACKAGING/systemimage_intermediates/system.img
in mkuserimg.sh PATH=out/host/linux-x86/bin/:/home/asus/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/asus/bin
make_ext4fs -l 128M -a system out/target/product/myx86/obj/PACKAGING/systemimage_intermediates/system.img out/target/product/myx86/system
Creating filesystem with parameters:
Size: 134217728
Block size: 4096
Blocks per group: 32768
Inodes per group: 8192
Inode size: 256
Journal blocks: 1024
Label:
Blocks: 32768
Block groups: 1
Reserved block group size: 7
error: do_inode_allocate_extents: Failed to allocate 749 blocks
make: *** [out/target/product/myx86/obj/PACKAGING/systemimage_intermediates/system.img] Error 4
define TARGET_SYSTEMIMAGES_USE_EXT2 := true in your product’s BoardConfig.mk
build/core/Makefile
change
ifeq ($(INTERNAL_USERIMAGES_USE_EXT),true)
## generate an ext2 image
# $(1): output file
define build-systemimage-target
@echo “Target system fs image: $(1)”
$(call build-userimage-ext-target, $(TARGET_OUT), $(1), system, $(INTERNAL_USERIMAGES_EXT_VARIANT), $(BOARD_SYSTEMIMAGE_PARTITION_SIZE))
endef
to
ifeq ($(INTERNAL_USERIMAGES_USE_EXT),true)
ifeq ($(TARGET_SYSTEMIMAGES_USE_EXT2),true)
-include external/genext2fs/Config.mk
## generate an ext2 image
# $(1): output file
define build-systemimage-target
@echo “Target system fs image: $(1)”
$(call build-userimage-ext2-target,$(TARGET_OUT),$(1),system,)
endef
else
define build-systemimage-target
@echo “Target system fs image: $(1)”
$(call build-userimage-ext-target,$(TARGET_OUT),$(1),system,$(INTERNAL_USERIMAGES_EXT_VARIANT),$(BOARD_SYSTEMIMAGE_PARTITION_SIZE))
endef
endif