我有一个使用OpenGL ES3的Android应用程序。我可以为我的64位android设备构建(并运行)它。
当我尝试构建32位时,链接器找不到libGLESv3库,构建失败。
在我的应用程序gradle中,我有:
compileSdkVersion 26
defaultConfig {
applicationId "com.steenriver.biplane"
minSdkVersion 16
targetSdkVersion 19
versionCode 113
versionName "1.13"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk {
abiFilters 'armeabi-v7a'
//abiFilters 'arm64-v8a'
}
externalNativeBuild {
cmake {
//ldFlags "-Wl,-fuse-ld=gold"
cppFlags "-std=c++11 -DANDROID=1 -DPLAY=1 -DUSEES3=1 -DLOGTAG=biplane"
arguments "-DCMAKE_VERBOSE_MAKEFILE=1", "-DANDROID_TOOLCHAIN=clang", "-DANDROID_ARM_NEON=TRUE", "-DANDROID_ARM_MODE=arm"
}
}
}
使用arm64-v8a,没有问题。
使用armeabi-v7a(做一个干净的项目后),我得到:
/home/bram/android sdk linux/ndk bundle/toolschains/arm-linux-androideabi-4.9/prebuild/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9。x/../../../..//arm linux AndroidAbi/bin/ld。gold:错误:找不到-lGLESv3
我在Ubuntu上使用Android Studio 3.0.1。我在CmakeList中指定-lGLESv3。文本格式为:
target_link_libraries(biplane
gpg
pi
uif
gbase
dblunt
gpgoap
opende
freealut
openal
EGL
GLESv3
OpenSLES
android
log
z
m
)
链接器的完整命令行是:
/home/bram/android-sdk-linux/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=armv7-none-linux-androideabi --gcc-toolchain=/home/bram/android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 --sysroot=/home/bram/android-sdk-linux/ndk-bundle/sysroot -fPIC -isystem /home/bram/android-sdk-linux/ndk-bundle/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=16 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fno-integrated-as -marm -mfpu=neon -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11 -DANDROID=1 -DPLAY=1 -DUSEES3=1 -DLOGTAG=biplane -DDEBUG -O0 -fno-limit-debug-info -fuse-ld=gold -Wl,--exclude-libs,libgcc.a --sysroot /home/bram/android-sdk-linux/ndk-bundle/platforms/android-16/arch-arm -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname,libbiplane.so -o /home/bram/apps/Proto/Biplane/AndroidProject/app/build/intermediates/cmake/debug/obj/armeabi-v7a/libbiplane.so CMakeFiles/biplane.dir/main.cpp.o CMakeFiles/biplane.dir/androidsupport.cpp.o CMakeFiles/biplane.dir/android_native_app_glue.c.o CMakeFiles/biplane.dir/StateManager.cpp.o CMakeFiles/biplane.dir/scorekeeper.cpp.o /home/bram/src/gpg-cpp-sdk/android/lib/gnustl/armeabi-v7a/libgpg.a /home/bram/apps/Proto/Biplane/AndroidProject/app/.externalNativeBuild/cmake/PI/output/libpi.a /home/bram/apps/Proto/Biplane/AndroidProject/app/.externalNativeBuild/uif/output/libuif.a /home/bram/apps/GBase/src/output/libgbase.a /home/bram/src/dutch-blunt/src/output/libdblunt.a /home/bram/src/GPGOAP/output/libgpgoap.a /home/bram/src/opende/output/libopende.a /home/bram/src/freealut/src/output/libfreealut.a /home/bram/src/openal-soft/jni/output/libopenal.a -lEGL -lGLESv3 -lOpenSLES -landroid -llog -lz -lm -lm "/home/bram/android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/libgnustl_static.a"
这是由第16版造成的。
自SDK 18及更高版本以来,Android仅支持OpenGLES3。
我已经将minSdkVersion设置为19,现在还有armeabi-v7a链接。我不确定arm64-v8a是如何连接的。
问题内容: 我有一个32位.so二进制库,我必须生成使用它的64位程序。有没有办法包装或转换它,使其可以与64位程序一起使用? 问题答案: 不能。您不能直接链接到64位程序内部的32位代码。 最好的选择是编译一个可以在64位平台上运行的32位(独立)程序(使用ia32),然后使用一种进程间通信的形式从64位程序与其进行通信。
问题内容: 在Java中,是否保证int始终为32位,而长为64位,而不管体系结构是32位还是64位? 问题答案: Java是平台无关的。所以是32位,并且是64位的。
问题内容: 我的电脑正在使用Windows 7 64位。但是将要部署我的jsp Web应用程序的服务器是32位。 我需要在PC上安装32位JDK / JRE才能进行开发吗?我正在使用Eclipse。 非常感谢你。 问题答案: 您绝对不需要安装32位JRE即可进行开发。您构建的Java代码不会跟踪您的64位。(我假设您没有使用JNI,这会使事情变得有些复杂。) 不过,您 可能 需要安装32位JRE进
问题内容: 我有以下配置: 1)Windows 10 64位 2)只有32位版本的应用程序可通过COM获得。 我使用tlbimb.jar访问32位应用程序的.dll文件,以生成所需的接口,然后成功。 方案1:我尝试使用Java 8 32位 安装访问32位应用程序。我可以 成功 通过COM 成功 调用这些方法。 方案2:我尝试使用Java 8 64位安装访问32位应用程序。我收到一条错误消息: 我在
我所拥有的: 安装在Windows Server 2008R2上的64位SQLServer 2012 32位ODBC驱动程序SyBase ASE 12.5.1(我没有能力获得任何其他官方驱动程序) 我需要的是: 从SQL Server访问SyBase(我需要从两个表中选择数据并执行两个存储过程) 我已经安装了ODBC驱动程序,并使用。当我从ODBC数据源管理器测试连接时,已成功建立连接。但是,当我