android NDK开发库相关的知识

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库,出了点问题,结果不小心把这些路都走了一遍。浪费了不少时间。






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值