天天看點

ndk-build 出現undefined reference to `__android_log_write'錯誤

__android_log_write(ANDROID_LOG_INFO,"MyNdkDemo", "class Point not found");

.c檔案中存在此句代碼,當使用ndk-build是就會出現标題錯誤。

解決:

       mk檔案中缺少了LOCAL_LDLIBS參數。

在Android.mk檔案裡,可以指定一個LOCAL_LDLIBS的參數。如果不指定,那麼編譯的時候,隻會引入預設的幾個重要的lib,比如libc之類的。

如果要用log,那就要把 liblog給引進來。

網上很多的寫法是 LOCAL_LDLIBS := -llog ,這在build static lib的時候沒什麼問題。如果是build shared lib,就會報個 cannot find -llog的錯誤。意思是找不到liblog.so這個庫檔案。

是以需要改成 LOCAL_LDLIBS :=  -L$(SYSROOT)/usr/lib -llog 才可以正常編譯。

其中-L參數是指定了搜尋lib的路徑。

下面是一個android.mk的内容的例子:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := TestNdkNetwork

LOCAL_SRC_FILES := HttpConnection.cpp

LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog(llog 是哪個庫?是不是打錯了?是liblog)

include $(BUILD_SHARED_LIBRARY)