簡體   English   中英

在Android.mk中將多個.c文件鏈接在一起

[英]Linking multiple .c files together in Android.mk

如何在Android.mk文件中鏈接或“使用”多個.c文件?

目前看起來像這樣

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := ndk_demo
LOCAL_SRC_FILES := gnutls-3.0.12/lib/debug.c
include $(BUILD_SHARED_LIBRARY)

但是,當我嘗試ndk-build時,它總是拋出此錯誤

Compile thumb  : ndk_demo <= debug.c
In file included from jni/gnutls-3.0.12/lib/debug.c:25:
jni/gnutls-3.0.12/lib/gnutls_int.h:52:43: error: u64.h: No such file or directory
jni/gnutls-3.0.12/lib/gnutls_int.h:57:24: error: gl/memxor.h: No such file or directory
jni/gnutls-3.0.12/lib/gnutls_int.h:84:27: error: gnutls/gnutls.h: No such file or directory
jni/gnutls-3.0.12/lib/gnutls_int.h:85:29: error: gnutls/abstract.h: No such file or directory
jni/gnutls-3.0.12/lib/gnutls_int.h:86:20: error: system.h: No such file or directory
jni/gnutls-3.0.12/lib/gnutls_int.h:202:24: error: gnutls_mem.h: No such file or directory
jni/gnutls-3.0.12/lib/gnutls_int.h:219:24: error: gnutls_mpi.h: No such file or directory
jni/gnutls-3.0.12/lib/gnutls_int.h:230:24: error: gnutls_str.h: No such file or directory
In file included from jni/gnutls-3.0.12/lib/debug.c:25:
jni/gnutls-3.0.12/lib/gnutls_int.h:276: error: expected specifier-qualifier-list before 'gnutls_handshake_description_t'
jni/gnutls-3.0.12/lib/gnutls_int.h:307: error: expected specifier-qualifier-list before 'gnutls_datum_t'
jni/gnutls-3.0.12/lib/gnutls_int.h:350: error: expected specifier-qualifier-list before 'gnutls_credentials_type_t'
jni/gnutls-3.0.12/lib/gnutls_int.h:361: error: expected specifier-qualifier-list before 'gnutls_pk_params_st'
jni/gnutls-3.0.12/lib/gnutls_int.h:418:29: error: gnutls_hash_int.h: No such file or directory
jni/gnutls-3.0.12/lib/gnutls_int.h:419:31: error: gnutls_cipher_int.h: No such file or directory
jni/gnutls-3.0.12/lib/gnutls_int.h:420:29: error: gnutls_compress.h: No such file or directory
jni/gnutls-3.0.12/lib/gnutls_int.h:459: error: expected specifier-qualifier-list before 'gnutls_kx_algorithm_t'
jni/gnutls-3.0.12/lib/gnutls_int.h:506: error: expected specifier-qualifier-list before 'gnutls_datum_t'
jni/gnutls-3.0.12/lib/gnutls_int.h:527: error: expected specifier-qualifier-list before 'gnutls_cipher_algorithm_t'
jni/gnutls-3.0.12/lib/gnutls_int.h:543: error: 'GNUTLS_MAX_ALGORITHM_NUM' undeclared here (not in a function)
jni/gnutls-3.0.12/lib/gnutls_int.h:584: error: expected specifier-qualifier-list before 'bigint_t'
jni/gnutls-3.0.12/lib/gnutls_int.h:591: error: expected specifier-qualifier-list before 'gnutls_dh_params_t'
jni/gnutls-3.0.12/lib/gnutls_int.h:657: error: expected specifier-qualifier-list before 'gnutls_buffer_st'
jni/gnutls-3.0.12/lib/gnutls_int.h:882: error: expected ')' before 'session'
jni/gnutls-3.0.12/lib/gnutls_int.h:897: warning: parameter names (without types) in function declaration
jni/gnutls-3.0.12/lib/gnutls_int.h:898: error: expected '=', ',', ';', 'asm' or '__attribute__' before '_gnutls_get_adv_version'
jni/gnutls-3.0.12/lib/gnutls_int.h:903: error: expected '=', ',', ';', 'asm' or '__attribute__' before '_gnutls_protocol_get_version'
jni/gnutls-3.0.12/lib/gnutls_int.h:911: error: expected ')' before 'session'
In file included from jni/gnutls-3.0.12/lib/debug.c:26:
jni/gnutls-3.0.12/lib/gnutls_errors.h:26:24: error: gnutls_int.h: No such file or directory
jni/gnutls-3.0.12/lib/gnutls_errors.h:27:27: error: gnutls_global.h: No such file or directory
In file included from jni/gnutls-3.0.12/lib/debug.c:26:
jni/gnutls-3.0.12/lib/gnutls_errors.h:51: error: expected ')' before 'const'
jni/gnutls-3.0.12/lib/gnutls_errors.h:58: error: expected declaration specifiers or '...' before 'bigint_t'
In file included from jni/gnutls-3.0.12/lib/debug.c:29:
jni/gnutls-3.0.12/lib/debug.h:24: error: expected ')' before 'handshake'
jni/gnutls-3.0.12/lib/debug.h:25: error: expected declaration specifiers or '...' before 'bigint_t'
jni/gnutls-3.0.12/lib/debug.c:67: error: expected ')' before 'handshake'
make: *** [obj/local/armeabi/objs/ndk_demo/gnutls-3.0.12/lib/debug.o] Error 1

我如何將u64.h之類的文件包含到Android.mk中,以免出現此類文件或目錄錯誤? 還是我會以錯誤的方式處理?

如果要指定幾個c文件,語法如下:

LOCAL_SRC_FILES := \
    my_c_file1.c \
    my_c_file1.c \
    my_c_file2.c \
    my_last_c_file.c

使用以下偽指令將頭文件的路徑添加到make文件中:

LOCAL_C_INCLUDES := \
    /my_path1_to_h_files/ \
    /my_path2_to_h_files/ \
    /my_pathN_to_h_files/

並且,如果您的模塊使用一些共享庫進行鏈接,則可以添加以下內容:

LOCAL_SHARED_LIBRARIES := \
    lib1 \
    lib2 \
    lib3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM