[osg-users] Android osgPlugins

Christian Kehl christian-kehl at web.de
Mon Apr 27 02:33:49 PDT 2015


the proposed change in the Application.mk did have no influence on the outcome, unfortunately. Hence, I reverted to the dirty trick of copying the libgnustl-shared.so and libgnustl_static.a to the OSG_LIB directory. That did get rid of the major body of errors, leaving just the following errors:

christian at PROMETHEUS:/media/christian/DATA/osgAndroid/org.openscenegraph.android$ ${ANDROID_NDK}/ndk-build
[armeabi] Compile++ thumb: jniosg-gles1 <= JNIosgViewer.cpp
[armeabi] Compile++ thumb: jniosg-gles1 <= JNIosg.cpp
[armeabi] Compile++ thumb: jniosg-gles1 <= JNIosgDB.cpp
[armeabi] Compile++ thumb: jniosg-gles1 <= JNIosgUtil.cpp
[armeabi] Compile++ thumb: jniosg-gles1 <= JNIosgGA.cpp
[armeabi] Compile++ thumb: jniosg-gles1 <= JNIUtils.cpp
[armeabi] Compile++ thumb: jniosg-gles1 <= MultiViewNode.cpp
[armeabi] Compile++ thumb: jniosg-gles1 <= GLES2ShaderGenVisitor.cpp
[armeabi] SharedLibrary  : libjniosg-gles1.so
/home/christian/android-install/lib/osgPlugins-3.3.7/libosgdb_serializers_osgparticle.a(RadialShooter.cpp.o):RadialShooter.cpp:function osgParticle::range<float>::get_random() const: error: undefined reference to 'rand'
/home/christian/android-install/lib/osgPlugins-3.3.7/libosgdb_serializers_osgparticle.a(RadialShooter.cpp.o):RadialShooter.cpp:function osgParticle::RadialShooter::shoot(osgParticle::Particle*) const: error: undefined reference to 'rand'
/home/christian/android-install/lib/osgPlugins-3.3.7/libosgdb_serializers_osgparticle.a(RandomRateCounter.cpp.o):RandomRateCounter.cpp:function osgParticle::RandomRateCounter::numParticlesToCreate(double) const: error: undefined reference to 'rand'
/home/christian/android-install/lib/osgPlugins-3.3.7/libosgdb_serializers_osgparticle.a(SectorPlacer.cpp.o):SectorPlacer.cpp:function osgParticle::SectorPlacer::place(osgParticle::Particle*) const: error: undefined reference to 'rand'
/home/christian/android-install/lib/libosgText.a(Glyph.cpp.o):Glyph.cpp:function osgText::GlyphTexture::apply(osg::State&) const: error: undefined reference to 'glGenerateMipmap'
/home/christian/android-install/lib/libosgDB.a(FileUtils.cpp.o):FileUtils.cpp:function osgDB::fileType(std::string const&): error: undefined reference to 'stat64'
/home/christian/android-install/lib/libosgDB.a(FileUtils.cpp.o):FileUtils.cpp:function osgDB::makeDirectory(std::string const&): error: undefined reference to 'stat64'
/home/christian/android-install/lib/libosgDB.a(FileUtils.cpp.o):FileUtils.cpp:function osgDB::makeDirectory(std::string const&): error: undefined reference to 'stat64'
/home/christian/android-install/lib/libosg.a(Shader.cpp.o):Shader.cpp:function osg::Shader::PerContextShader::compileShader(osg::State&): error: undefined reference to 'glShaderBinary'
collect2: error: ld returned 1 exit status
make: *** [obj/local/armeabi/libjniosg-gles1.so] Error 1

The first part of the errors is related to a missing rand() function. This is quite weird to me cause rand() is a core C function, so that should theoretically compile anywhere and everywhere. No clue why it misses that function.
Then, there are the two gl-related errors. The mipmap generation, I believe, is part of the glu-library, which is not referred to by the GLES library file (should that function be in the Android build in any case ?). The other one is the glShaderBinary, which could be a GLES1-GLES2 glitch, I assume.
The third category are the stat64 errors, which are related (I strongly believe) to some missing ifdefs for 32-bit - 64-bit compilation (as only the newest android models and the r10c NDK support 64-bit compile and run).

Any idea how to get rid of these last errors ?

Thank you!


Read this topic online here:

More information about the osg-users mailing list