移植udt到android


首先要裝好並配置好NDK,下載UDT源碼。下面從創建jni目錄開始

1 創建jni目錄,可以是任意的xxxxxx/jni
2 把udt源碼移動或拷貝到jni目錄下
../udt-test/jni/UDT4
3 創建Android.mk
 在udt的src目錄下添加Android.mk文件,其內容如下:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
APP_STL := gnustl_static
LOCAL_CFLAGS := -DLINUX -fvisibility=hidden

LOCAL_ARM_MODE := arm
LOCAL_CPPFLAGS := -fPIC -Wall -Wextra -DLINUX -finline-functions -O3 -fno-strict-aliasing -fvisibility=hidden
LOCAL_LDLIBS :=-L$(SYSROOT)/usr/lib -llog
LOCAL_C_INCLUDES := /usr/include/c++/4.5/
LOCAL_CPP_EXTENSION:=.cpp

LOCAL_MODULE := udt
LOCAL_SRC_FILES := md5.cpp common.cpp window.cpp list.cpp buffer.cpp packet.cpp channel.cpp queue.cpp ccc.cpp cache.cpp core.cpp epoll.cpp api.cpp


include $(BUILD_SHARED_LIBRARY)

設置工程目錄
export NDK_PROJECT_PATH=~/Desktop/wshare/udt-test
之后輸入ndk-build進行編譯會出現如下錯誤
Android NDK: Your APP_BUILD_SCRIPT points to an unknown file:
因為還有Android.mk未創建

 分別在jni目錄和udt目錄下創建Android.mk,文件內容均為

include $(all-subdir-makefiles)

ndk-build進行編譯會出現如下錯誤
error: fstream: No such file or directory
error: set: No such file or directory
error: string: No such file or directory
error: vector: No such file or directory

因為還有一步
在jni目錄下創建Application.mk,其內容如下

APP_STL := gnustl_static

OK,小功告成。編譯完成后會在jni目錄下生成兩個目錄,libs,obj。可以在其中找到生成的動態庫libudt.so

我想要的是靜態庫libudt.a,怎么辦呢?
很簡單,把上面Android.mk中的這一行include $(BUILD_SHARED_LIBRARY)
換成include $(BUILD_STATIC_LIBRARY)
然后輸入ndk-build,沒什么反應。嗯……
還得在上面提到的Application.mk文件中添加如下內容

APP_MODULES := libudt

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM