osg for android 编译,osg for android学习之一:windows下编译(亲测通过)

首先有个群 236268456 osg for android 此文参考cookbook一书

并且参考

http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/2012-March/057074.html

1. 前提

我的系统是windows7 x64位英文版本(win 2008 英文版也编译通过)

osg是最新版,应该是3.0.2

记得不要用windows下的cmake,要用cygwin中的cmake命令。

记得一定要把系统环境变量Path加上D:\cygwin\bin;F:\Android\IDE\android-ndk-r8-windows,否则出现ANDROID_NDK  NOT FOUND类似的错误(经过多次测试,不是环境变量的问题,是因为ndk-r8b会使用ANDROID_NDK作为NDK的调用命令,因此在cygwin配置文件修改的时候吧NDK改为ANDROID_NDK就可以了,android-ndk-r8b-windows是没有问题的)。

虽然用rb8,可以编译通过,但是在ndk-build的时候会报the mangling of 'va_list' has changed in GCC 4.4的提示和错误,所以千万不要用r8b,我用r8,没有问题。

2.  准备

新建一个文件夹,如F:\osgeo4w\osg\trunk

(1)安装TortoiseSVN-x64,在天空软件下的

在F:/osgeo4w/osg/trunk目录下右键选择TortoiseSVN的checkout,输入http://www.openscenegraph.org/svn/osg/OpenSceneGraph/trunk

下载最新的osg,放在F:/osgeo4w/osg/trunk/OpenSceneGraph下

(2)下载安装cygwin,并且把del的部分装完,这个过程需要花费2-3个小时,主要是下载时间。

(3)下载 3rdpartyAndroid.zip ,注意不要用windows下的第三方库

下载链接在http://www2.ai2.upv.es/difusion/osgAndroid/3rdpartyAndroid.zip 有89127k

(4)下载NDK,我下的是android-ndk-r8-windows.zip有107M,解压到某个目录下,如F:\Android\IDE\android-ndk-r8-windows。

(5)打开cygwin安装目录下的.bash_profile文件,我的在D:\cygwin\home\xuhy\.bash_profile,xuhy是你电脑的登录用户名。

在末尾加上 NDK=/cygdrive/F/Android/IDE/android-ndk-r8-windows export NDK

如果使用 android-ndk-r8b-windows 需要设置如下:

ANDROID_NDK=/cygdrive/F/Android/IDE/android-ndk-r8b export ANDROID_NDK

ANDROID_SDK=/cygdrive/F/Android/IDE/android-sdk_r20-windows export ANDROID_SDK

然后运行D:\cygwin\Cygwin.bat文件。

之后测试一下cygwin和NDK是否成功,方法如下:

③验证

重启cygwin,输入:cd $NDK

能进入到ndk对应目录说明设置OK。

5 编译工程生成.so文件

① 必须以管理员权限运行,否则会出错,进入android项目工作目录:cd $NDK

② 依次进入samples\hello-jni目录,完整路径为F:\Android\IDE\android-ndk-r8-windows\samples\hello-jni

③ 运行:$NDK/ndk-build。

注意:该命令$NDK和/ndk-build是连接到一起的,中间没有空格,实际使用时输入完整命令$NDK/ndk-build,不能只输入ndk-build

正常编译编译后,当前目录下生成两个文件夹libs和obj,在项目libs/armeabi目录下生成对应的.so文件。

3. 开始

把 3rdpartyAndroid.zip 解压到F:/osgeo4w/osg/trunk/OpenSceneGraph下,如下,cmake的时候会自动去搜索。

0818b9ca8b590ca3270a3433284dd417.png

然后在F:/osgeo4w/osg/trunk/OpenSceneGraph中新建一个文件夹为build

之后,管理员权限运行cygwin,cd到这个build目录下,输入如下命令:

如果是编译GLES1版本,输入如下:

cmake .. -DOSG_BUILD_PLATFORM_ANDROID=ON -DDYNAMIC_OPENTHREADS=OFF -DDYNAMIC_OPENSCENEGRAPH=OFF -DOSG_GL_DISPLAYLISTS_AVAILABLE=OFF -DOSG_GL_MATRICES_AVAILABLE=ON -DOSG_GL_VERTEX_FUNCS_AVAILABLE=ON -DOSG_GL_VERTEX_ARRAY_FUNCS_AVAILABLE=ON -DOSG_GL_FIXED_FUNCTION_AVAILABLE=ON -DOSG_CPP_EXCEPTIONS_AVAILABLE=OFF -DOSG_GL1_AVAILABLE=OFF -DOSG_GL2_AVAILABLE=OFF -DOSG_GL3_AVAILABLE=OFF -DOSG_GLES1_AVAILABLE=ON -DOSG_GLES2_AVAILABLE=OFF -DJ=4

如果编译GLES2版本,输入如下:

cmake .. -DOSG_BUILD_PLATFORM_ANDROID=ON -DDYNAMIC_OPENTHREADS=OFF -DDYNAMIC_OPENSCENEGRAPH=OFF -DOSG_GL_DISPLAYLISTS_AVAILABLE=OFF -DOSG_GL_MATRICES_AVAILABLE=OFF -DOSG_GL_VERTEX_FUNCS_AVAILABLE=OFF -DOSG_GL_VERTEX_ARRAY_FUNCS_AVAILABLE=OFF -DOSG_GL_FIXED_FUNCTION_AVAILABLE=OFF -DOSG_CPP_EXCEPTIONS_AVAILABLE=OFF -DOSG_GL1_AVAILABLE=OFF -DOSG_GL2_AVAILABLE=OFF -DOSG_GL3_AVAILABLE=OFF -DOSG_GLES1_AVAILABLE=OFF -DOSG_GLES2_AVAILABLE=ON -DJ=4

安装后结果如下

0818b9ca8b590ca3270a3433284dd417.png

>

其他参数还有

-DANDROID_NDK={Path to your NDK root directory}

-DANDROID_ABI "armeabi armeabi-v7a"

-DANDROID_PLATFORM=8

-DANDROID_STL="gnustl_static"

-DANDROID_DEBUG

-DANDROID_OPTIM_NEON

-DANDROID_OPTIM_ARM32

-DJ=4

-DCMAKE_INSTALL_PREFIX=/cygdrive/d/osggles2

我没有用到。

然后回车。

控制台会输出很多信息,包括他找到第三方库和NDK的信息。

0818b9ca8b590ca3270a3433284dd417.png

之后make,会等很久,大概2个小时以上。

成功后界面如下:

0818b9ca8b590ca3270a3433284dd417.png

然后make install,一分钟以内,界面如下:

0818b9ca8b590ca3270a3433284dd417.png

从图上可以看到,安装的位置在usr/local......下面,也就是说是在cygwin模拟的linux环境下的。

至此,据说可以运行例子了,怎么运行?我还没试。

注意看安装目录obj\local\ 下的有没有如下.a文件,如果没有,从第三方库拷贝过来,否则链接的时候会报错。

感谢群里 歆煢 的提醒。

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值