欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Qt项目中使用Android ndk编译 armeabi-v7可用的protobuf v3.12.3 静态库

程序员文章站 2022-03-10 22:53:03
啊啊啊啊交叉编译啊啊啊,用.mk生成的静态库文件懒得链接其他标准std异常库,导致编译报114甚至514个错经测试,使用ndkr19-c中的make工具编译生成的静态库不能被使用同版本ndk的qt程序链接,但是可被r21b版本ndk成功链接,所以我尝试的最后一个可用组合是r19c生成库+r21b编译apk,后续会尝试全部使用r21b(看见某stderr和一堆exception爆红相关就反胃啊嗯)先执行下面的bash命令,位置随意\color{red}{先执行下面的bash命令,位置随意}先执行下面的....

啊啊啊啊交叉编译啊啊啊,用.mk生成的静态库文件懒得链接其他标准std异常库,导致编译报114甚至514个错

经测试,使用ndkr19-c中的make工具编译生成的静态库不能被使用同版本ndk的qt程序链接,但是可被r21b版本ndk成功链接,所以我尝试的最后一个可用组合是r19c生成库+r21b编译apk,后续尝试全部使用r21b也能正常编译(看见某stderr和一堆exception爆红相关就反胃啊嗯)

bash\color{red}{先执行下面的bash命令,位置随意}

cmake -G "MinGW Makefiles" \ -DCMAKE_TOOLCHAIN_FILE=这是你的NDK目录/build/cmake/android.toolchain.cmake \ -DCMAKE_MAKE_PROGRAM=这还是你的NDK目录/prebuilt/windows-x86_64/bin/make.exe \ -Dp
rotobuf_BUILD_TESTS=OFF \ 这是你的protobuf项目目录(src的上一层,项目根目录)/cmake

\color{red}{然后就是我们的老朋友语句}

cmake --build . --target libprotobuf
cmake --build . --target libprotobuf-lite

至于Qt的.pro,稍微放一下,win里我是用动态库链接的,android嫌麻烦就静态编完算了

win32: {
	DEFINES += PROTOBUF_USE_DLLS
	LIBS += \
		-L$$PWD/../lib/ -llibprotobuf	\
		-L$$PWD/../lib/ -llibprotobufd	\
}
android: {
	LIBS += $$PWD/../lib/libprotobuf.a
}

本文地址:https://blog.csdn.net/qq_35587463/article/details/107190818