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

步骤:

  1. LD_LIBRARY_PATH环境变量方式

    • 1、在集成的APP启动前,执行一个脚本 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/share/sangfor/aTrust/resources/lib
    • 2、执行完上面的的export命令后,再拉起APP
  2. rpath方式

    • 1、patchelf --set-rpath /usr/share/sangfor/aTrust/resources/lib 【这里填写你收到的aTrustSDK动态库的路径】
    • 2、设置完后可以使用readelf -d 【这里填写刚才修改的那个路径】

c++_sym.png

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:

  1. 如果出现头文件无法找到问题,请确认CMake是否指定了头文件搜索路径,g++是否指定了-I选项
  2. 如果出现符号找不到,请确认是否设置了动态库搜索路径
  3. 如果出现c++符号版本未定义,请确认是否链接了/usr/share/sangfor/aTrust/resources/lib/libstdc++.so.6
深信服科技 all right reserved,powered by Gitbook本文档更新于: 2024-12-19 18:06

results matching ""

    No results matching ""