1,查看库的依赖关系
/Users/Tiancai/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/arm-linux-androideabi/bin/objdump -x /Users/robin/RobinProgram/test/build-testOpenSSl-Android_for_armeabi_v7a_GCC_4_9_Qt_5_4_1_2d9e49-Debug/android-build/libs/armeabi-v7a/libtestOpenSSl.so | grep NEEDED
2,pro 文件中添加库
我用了这种方式,
动态链接库的方式:
LIBS += -L$$PWD/lib -lcrypto -lssl很奇怪的是,生成的安装包文件中 没有 libcrypto.so和 libssl.so文件,但是,程序能正常运行,好奇怪,我认为是包含到了生成的可执行文件中了。
静态链接库方式:
LIBS += $$PWD/lib/libssl.a \
$$PWD/lib/libcrypto.a我比较了一下,生成的可执行的目标文件的大小,两者差不多,都是几十KB的样子。
我怀疑这两种方式,都只是把需要的函数包含了进去。并没有把所有的函数都包含进去。这样一来,采用动态库与采用静态库没有什么区别了。(不知道我猜的对不对)
3,库的添加方式
第一种:
这样添加之后,在pro文件中添加
ANDROID_EXTRA_LIBS += $$PWD/lib/libcrypto.so \$$PWD/lib/libssl.so
qmake后这两个地方是相对应的。
不过这里只能添加 .so 后缀的文件。不然会报错的。
第二种:
other_1.files += $$PWD/lib/android/libdvnc_flinger_sdk14.so \
$$PWD/lib/android/libv.so
other_1.path = /libs/armeabi-v7a
INSTALLS += other_1
在 QtCreator中显示为
这种方式也
可以将其他类型的文件打包到安装包中。但是 同样的,不能将 非so结尾的文件放到可执行文件的目录中。 打包的时候,它貌似就自动给你过滤了。
注:因为编译openssl库,出了点问题,结果不小心把这些路都走了一遍。浪费了不少时间。