基于Anycloud37D平台移植cJSON

基于Anycloud37D平台移植cJSON

0. 环境准备

  1. 系统环境: Ubuntu 16.04.7

  2. SDK版本:AK37D_SDK_V1.05

  3. cJSON下载:

    https://github.com/DaveGamble/cJSON.git

  4. 本次采用当前时间点最后一个版本 cJSON-1.7.15.tar.gz

1. 交叉编译

  1. tar xzf cJSON-1.7.15.tar.gz

  2. cd cJSON-1.7.15

  3. mkdir build

  4. cd build

  5. cmake ../ -DBUILD_SHARED_AND_STATIC_LIBS=On -DCMAKE_INSTALL_PREFIX=/home/anyka/project/cjson/arm -DCMAKE_C_COMPILER=/opt/arm-anykav500-linux-uclibcgnueabi/bin/arm-anykav500-linux-uclibcgnueabi-gcc

  6. make

  7. make install

3. 测试

  1. 编译简单得sample:

    anyka@anyka-VirtualBox:~/project/cjson$ arm-anykav500-linux-uclibcgnueabi-gcc test.c -o test -I./arm/include -I./arm/include/cjson  -L./arm/lib -lcjson
    /opt/arm-anykav500-linux-uclibcgnueabi/bin/../lib/gcc/arm-anykav500-linux-uclibcgnueabi/4.9.4/../../../../arm-anykav500-linux-uclibcgnueabi/bin/ld: warning: libssp.so.0, needed by ./arm/lib/libcjson.so, not found (try using -rpath or -rpath-link)
    ./arm/lib/libcjson.so: undefined reference to `__stack_chk_fail@LIBSSP_1.0'
    ./arm/lib/libcjson.so: undefined reference to `__stack_chk_guard@LIBSSP_1.0'
    

    发现出现异常报错,解决方法:

    anyka@anyka-VirtualBox:~/project/cjson$ arm-anykav500-linux-uclibcgnueabi-gcc test.c -o test -I./arm/include -I./arm/include/cjson  -L./arm/lib -lcjson -lssp
    

    编译选项添加 -lssp.

  2. 创建一个测试用配置 conf.json:

    {
        "T": [
        {"name": "T1","type": "s1"},
        {"name": "T2","type": "s2"}
        ]
    }
    
  3. 将sample、动态库(libcjson.so.1.7.15)以及配置放到文件系统里.

  4. 运行sample:

    [root@anyka /tmp]$ ls
    conf.json      start_message  test
    [root@anyka /tmp]$ chmod 777 test
    [root@anyka /tmp]$ ./test
    /tmp/test: can't load library 'libssp.so.0'
    

    发现当前缺少库libssp.so.0

    解决办法:

    从工具链中拷贝libssp:

    anyka@anyka-VirtualBox:~/project/AK37D_SDK_V1.05/rootfs/resource/lib$ cp /opt/arm-anykav500-linux-uclibcgnueabi/arm-anykav500-linux-uclibcgnueabi/lib/libssp.so* . -a
    

    将其放到设备文件系统中后,重新测试运行:

    [root@anyka /tmp]$ ls
    conf.json  test
    [root@anyka /tmp]$ chmod 777 test
    [root@anyka /tmp]$ ./test
    Cjson version:1.7.15
    i:0
    name:"T1"
    type:"s1"
    i:1
    name:"T2"
    type:"s2"
    

    测试正常.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值