libpomelo2在linux下编译android动态库libjpomelo

参考文章如下:

http://nodejs.netease.com/topic/540702e0898634292cd0a588

https://github.com/NetEase/libpomelo2

编译libjpomelo.so耗费了2天多的时间,资料很少,期间走了很多弯路,这里记录下。

1、官网下载libpomelo2源代码。

2、准备android ndk 10的包,我ubuntu是32位的,所以下载的是android-ndk32-r10b-linux-x86.tar.bz2  
 。

3、打开Terminal终端,最好root权限。执行./android-toolchain.sh <ndk-dir>。这里的ndk-dir就是第二步中下载的ndk解压目录。执行完后,会在libpomelo根目录生成android-toolcahin目录,里面有交叉编译所需的所有头文件,库文件和可执行文件。

4、在执行./android-gen.sh之前,我们需要设置一些环境变量,android-toolchain.sh中的export ANDROID_TOOLCHAIN_DIR=$PWD/android-toolchain这是在android-toolchain.sh执行结束实际上已经消失了,或者说没有起作用,所以我们要手动设置

vim /etc/profile,在末尾增加

export ANDROID_TOOLCHAIN_DIR=#PWD/android-toolchain,这里的#PWD应该为你的根目录,这里指向的则是刚才生成的android-toolcahin目录。

export PATH=$ANDROID_TOOLCHAIN_DIR/bin:$PATH

export PATH=/home/wangc/android-ndk-r10b/platforms/android-9/arch-arm/usr/include:$PATH

export AR=arm-linux-androideabi-ar

export CC=arm-linux-androideabi-gcc

export CXX=arm-linux-androideabi-g++

export LINK=arm-linux-androideabi-g++

export PLATFORM=android

这里我们将android-gen.sh里面开始设置的环境变量手动设置一遍,因为在里面设置不顶用。。。

5、执行./android-gen.sh,然后会生成一个Makefile,然后make则会在out/Default/lib.target目录下生成libjpomelo.so了。在Default/obj.target目录下有libpomelo2.a。至此库文件就生成完了。这里要注意查看下文件类型,file libjpomelo.so,如显示平台为ARM ELF,恭喜你,OK了。

6、eclipse测试。将根目录下的test/Client.java和Test.java拷贝到android工程下,注意目录结构,如图所示:

Testpomelo.java代码如下:

<span style="font-size:14px;">public class Testpomelo extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_testpomelo);

		Test.main(null);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.testpomelo, menu);
		return true;
	}

}
</span>

小伙伴们,还不赶快运行!

时间: 2024-11-08 22:36:11

libpomelo2在linux下编译android动态库libjpomelo的相关文章

linux下编译安装boost库

转载:http://www.cnblogs.com/oloroso/p/4632848.html linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4.安装boost库到指定目录 5.测试一下 代码 编译运行 先看一下系统环境 Linux o-pc 3.19.0-22-generic #22-Ubuntu SMP Tue Jun 16 17:15:15

Linux下编译Android平台的ffmpeg库

在Linux平台下编译要方便些,我这里使用的环境是openSUSE,用Ubutunu也是一样的. 首先你需要Android-NDK 和ffmpeg源码,不同的版本里的文件结构有所差别,编译环境也有所不同.我这里使用的是以下两个版本: android-ndk-r8-linux-x86.tar.bz2 ffmpeg-0.7.17.tar.gz 1. 解压 android-ndk-r8-linux-x86.tar.bz2 cd ~ tar xvf android-ndk-r8-linux-x86.ta

Linux下如何解决动态库的链接问题

关于动态库和静态库,这里不多解释,如何创建属于自己的动态库和静态库,之前有提过,详细内容戳链接. 静态库是一种以空间换取时间和移植性的做法,一些情况下确实有着一定的意义,但是一些情况下,我们自己编写的简单项目,在绝大多数的机器上不存在移植性问题,是没有必要采用静态编译的.而且,在一些大型项目中,我们很难避免去使用到开源库,举个例子,如果我们只是单纯引用了mysql数据库的几个接口,有必要将整个mysql源文件全部编译吗?代价未免太大.通常的做法,是将mysql的include 和lib目录打包之

Linux下编译安装PCRE库

备注:如果没有root权限,使用 --prefix 指定安装路径 ./configure --prefix=/home/work/tools/pcre-8.xx ====================================================== 最近在学习nginx,nginx rewrite依赖于PCRE库,所以需要在linux系统中编译安装PCRE库.具体步骤如下: 1.下载PCRE包 首先去官网下载pcre的安装包 如果通过FTP的方式,下载地址为:ftp://f

使用CMake在Linux下编译tinyxml静态库

环境:CentOS6.6+tinyxml_2_6_21.下载并解压tinyxml_2_6_2.zip unzip tinyxml_2_6_2.zip 2.在tinyxml文件夹里创建一个CMakeLists.txt文件,并将内容设置为 cmake_minimum_required(VERSION 2.8) project(TinyXMLLIB) include_directories(./) aux_source_directory(./ LIB_SRCS) #add_definitions(-

Linux下gcc编译控制动态库导出函数小结

Linux下gcc编译控制动态库导出函数小结 来源 https://www.cnblogs.com/lidabo/p/5703890.html 根据说明文档“How To Write Shared Libraries"介绍, 有四种方法: 1. 在方法声明定义时,加修饰:__attribute__((visibility("hidden"))) 就是说将不公开的函数都加上这个属性,没加的就是可见的 2. gcc 在链接时设置 -fvisibility=hidden,则不加 v

linux下编译qt5.6.0静态库——configure配置

 随笔 - 116  文章 - 4  评论 - 7 linux下编译qt5.6.0静态库--configure配置 linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberry选项: Android 选项: 生成makefile 遇到链接检查失败的情况 生成makefile后进行编译 编译时的错误 多重定义'QT_MODBUS()'和'QT_MODBU

Android导入第三方静态库.a编译成动态库.so

http://ikinglai.blog.51cto.com/6220785/1324985 在Android开发的时候,经常会使用到用c或c++编写的第三方的静态库.如果有源码的话,可以直接跟你自己的代码一去编译成动态库so,但是如果没有源码的话,你就必须在自己的动态库so里面将别人生成好的静态库导入进来一起编译了.我在编译的时候遇到了不少问题,我觉得有必要进行总结一下. 下面我以一个简单的实际例子来讲解如何在动态库中导入静态库. 静态库中的源代码有两个文件:static.h, static.

linux下编译qt5.6.0——configure配置

linux下编译qt5.6.0 首先下载源码包qt-everywhere-opensource-src-5.6.0.7z 然后解压 7z x -o/home/o/qt-src/qt-opensource-src-5.6.0 qt-everywhere-opensource-src-5.6.0.7z cd /home/o/qt-src/qt-opensource-src-5.6.0 我这里解压到/home/o/qt-src/qt-opensource-src-5.6.0中,解压后进入这个目录. c