移植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

原文链接: https://www.cnblogs.com/uvsjoh/archive/2013/03/28/2987302.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/82430

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午8:35
下一篇 2023年2月9日 下午8:35

相关推荐