移植udt到android

來源:互聯網
上載者:User

首先要裝好並配置好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_staticLOCAL_CFLAGS := -DLINUX -fvisibility=hiddenLOCAL_ARM_MODE := armLOCAL_CPPFLAGS := -fPIC -Wall -Wextra -DLINUX -finline-functions -O3 -fno-strict-aliasing -fvisibility=hiddenLOCAL_LDLIBS :=-L$(SYSROOT)/usr/lib -llogLOCAL_C_INCLUDES := /usr/include/c++/4.5/LOCAL_CPP_EXTENSION:=.cppLOCAL_MODULE := udtLOCAL_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.cppinclude $(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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.