5.2.1 动态库集成
1. so方式
我们提供了 libaTrustSDK.so
供用户自行调用,头文件位于 API_include
。
1.包含头文件
头文件位于 API_include
└── API_include
├── atrust_code.h
└── atrust_sync_sdk.h
2.编译链接libaTrustSDK.so
如遇到C++符号版本未定义时,请在编译时指定链接/usr/share/sangfor/aTrust/resources/lib/libstdc++.so.6
步骤:
LD_LIBRARY_PATH环境变量方式
- 1、在集成的APP启动前,执行一个脚本 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/share/sangfor/aTrust/resources/lib
- 2、执行完上面的的export命令后,再拉起APP
rpath方式
- 1、patchelf --set-rpath /usr/share/sangfor/aTrust/resources/lib 【这里填写你收到的aTrustSDK动态库的路径】
- 2、设置完后可以使用readelf -d 【这里填写刚才修改的那个路径】
3.设置动态库搜索路径
请确保你的程序能够在运行时正确找到libaTrustSDK.so以及上面提到的libstdc++.so.6。 你可以选择设置如下方式:
- LD_LIBRARY_PATH,设置该环境变量会按照该变量指定的路径去查找依赖库
- rpath,rpath是修改了文件的头部,将搜索路径写到了头部,会改变文件md5
特别注意:设置的LD_LIBRARY_PATH需要能同时找到libaTrustSDK.so以及/usr/share/sangfor/aTrust/resources/lib/libstdc++.so.6
5.2.2 静态库集成
静态库集成和上面动态库集成相似
Tips:
- 如果出现头文件无法找到问题,请确认CMake是否指定了头文件搜索路径,g++是否指定了-I选项
- 如果出现符号找不到,请确认是否设置了动态库搜索路径
- 如果出现c++符号版本未定义,请确认是否链接了/usr/share/sangfor/aTrust/resources/lib/libstdc++.so.6