android編譯錯誤及解決方案

來源:互聯網
上載者:User

1.設定編譯選項為make -j5  TARGET_ARCH=x86 TARGET_PRODUCT=generic  TARGET_SIMULATOR=false TARGET_BUILD_TYPE=release TARGET_OS=linux LOCAL_PRELINK_MODULE=false

2.build/core/envsetup.mk 中 91行 設定為x86(該步驟可以省略)

3.修改build/tools/dexpreopt目錄中Android.mk為Android-arm.mk,不編譯該模組(該模組以來與emulator)。

make: *** No rule to make target `out/target/product/generic/obj/lib/libdbus.so', needed by `out/target/product/generic/obj/EXECUTABLES/auth-agent_intermediates/LINKED/auth-agent'.  Stop.
原因:libdbus.so模組未編譯。external/dbus/dbus中mk檔案只對TARGET_ARCH = arm時又作用。

4.修改external/dbus/dbus目錄中Android.mk,TARGET_ARCH = x86,編譯該模組。

system/core/libcutils/memset32.S: Assembler messages:
system/core/libcutils/memset32.S:38: Error: unknown pseudo-op: `.fnstart'
.
.
.
system/core/libcutils/memset32.S:93: Error: unknown pseudo-op: `.fnend'
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libcutils_intermediates/memset32.o] Error 1
原因:system/core/libcutils模組在TARGET_SIMULATOR=false時,對arm相關代碼有依賴,依賴代碼如下:
    LOCAL_SRC_FILES := $(commonSources) memset32.S atomic-android-arm.S mq.c \
                       ashmem-dev.c
    LOCAL_C_INCLUDES := $(KERNEL_HEADERS)

5.修改system/core/libcutils目錄中Android.mk中78行(ifneq ($(TARGET_SIMULATOR),true)),暫使用TARGET_SIMULATOR=true編譯。

target thumb C: libwpa_client <= external/wpa_supplicant/wpa_ctrl.c
target thumb C: libwpa_client <= external/wpa_supplicant/os_unix.c
cc1: error: unrecognized command line option "-mabi=aapcs-linux"
cc1: error: unrecognized command line option "-mabi=aapcs-linux"
target thumb C: libnetutils <= system/core/libnetutils/dhcpclient.c
make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libwpa_client_intermediates/wpa_ctrl.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libwpa_client_intermediates/os_unix.o] Error 1
原因:不識別的命令列選項-mabi=aapcs-linux

6.修改external/wpa_supplicant/目錄中Android.mk 20行,去掉-mabi=aapcs-linux選項.

external/dbus/dbus/dbus-sysdeps-util-unix.c:48:27: error: sys/syslimits.h: No such file or directory
make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libdbus_intermediates/dbus-sysdeps-util-unix.o] Error 1
原因:定義了HAVE_SYS_SYSLIMITS_H該宏,但無法找到sys/syslimits.h標頭檔。

7.修改external/dbus/config.h中197行,#undef HAVE_SYS_SYSLIMITS_H。

system/core/debuggerd/crashglue.S:5: Error: no such instruction: `ldr r0,=0xa5a50000'
system/core/debuggerd/crashglue.S:6: Error: no such instruction: `ldr r1,=0xa5a50001'
.
.
.
system/core/debuggerd/crashglue.S:28: Error: no such instruction: `b .'
target arm C: libc <= bionic/libc/bionic/malloc_leak.c
make: *** [out/target/product/generic/obj/EXECUTABLES/crasher_intermediates/crashglue.o] Error 1
原因:system/core/debuggerd模組依賴於arm.

8.修改system/core/debuggerd模組中的Android.mk.重新命名為Android-arm.mk,暫不編譯該模組。

9.修改bionic/libc/tools目錄下的gensyscalls.py,產生x86架構的相關檔案。
  修改bionic/libc目錄下的Android.mk檔案,設定為x86.

 make: *** 沒有規則可以建立“out/target/product/generic/obj/SHARED_LIBRARIES/libc_intermediates/arch-x86/bionic/exidx_dynamic.o”需要的目標“bionic/libc/arch    -x86/bionic/exidx_dynamic.c”。 停止。
原因:bionic/libc/arch-x86/bionic目錄下無exidx_dynamic.c檔案。

10.修改bionic/libc/目錄中Android.mk檔案,去掉“arch-x86/bionic/exidx_dynamic.c \”。

/usr/include/gnu/stubs-32.h:7:3: error: #error Applications may not define the macro _LIBC
In file included from /usr/include/stdio.h:75,
                 from bionic/libc/bionic/malloc_leak.c:30:
/usr/include/libio.h:354: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘attribute_hidden’
/usr/include/libio.h:355: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘attribute_hidden’
/usr/include/libio.h:356: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘attribute_hidden’
make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libc_intermediates/bionic/malloc_leak.o] Error 1
原因:bionic/libc/Android.mk中設定了libc_common_cflags := -D_LIBC=1, 與/usr/include/gnu/stubs-32.h有衝突。

11.修改bionic/libc/Android.mk,去掉libc_common_cflags中 -d_LIBC=1.

In file included from bionic/libc/bionic/libc_init_dynamic.c:54:
bionic/libc/bionic/pthread_internal.h:45: 錯誤: expected specifier-qualifier-list before ‘__pthread_cleanup_t’
In file included from bionic/libc/bionic/libc_init_dynamic.c:56:
bionic/libc/bionic/libc_init_common.h:41: 錯誤: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘void’
bionic/libc/bionic/libc_init_dynamic.c:60: 錯誤: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘void’
make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libc_intermediates/bionic/libc_init_dynamic.o] 錯誤 1
原因:暫未調查。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.