json移植到ARM板

17 篇文章 0 订阅
14 篇文章 0 订阅

工具有:jsoncpp-src-0.5.0.tar.gz     arm工具链   测试程序

sudo apt-get install scons       可惜没有使用,

tar xvf  jsoncpp-src-0.5.0.tar.gz

资源包   http://pan.baidu.com/s/1dDpwfeT

编译arm下使用的动态库


由于不会使用scons最后还是自己该的编译方式反正成功了!呵呵

首先我执行了 scons platform=linux-gcc 

编译的结果是

lib_json/main.cpp: In member function 'void ValueTest::checkMemberCount(Json::Value&, unsigned int)':
src/test_lib_json/main.cpp:195:71: warning: value computed is not used [-Wunused-value]
src/test_lib_json/main.cpp:195:71: warning: statement has no effect [-Wunused-value]
g++ -o buildscons/linux-gcc-4.6/src/test_lib_json/jsontest.o -c -Wall -Iinclude -I. src/test_lib_json/jsontest.cpp
g++ -o buildscons/linux-gcc-4.6/src/test_lib_json/test_lib_json buildscons/linux-gcc-4.6/src/test_lib_json/main.o buildscons/linux-gcc-4.6/src/test_lib_json/jsontest.o -Llibs/linux-gcc-4.6 -lpthread -ljson_linux-gcc-4.6_libmt
Install file: "buildscons/linux-gcc-4.6/src/test_lib_json/test_lib_json" as "bin/linux-gcc-4.6/test_lib_json"
targz(["dist/jsoncpp-src-0.5.0.tar.gz"], ["AUTHORS", "README.txt", "SConstruct", "src/jsontestrunner/main.cpp", "src/jsontestrunner/sconscript", "src/lib_json/json_reader.cpp", "src/lib_json/json_value.cpp", "src/lib_json/json_writer.cpp", "src/lib_json/sconscript", "src/test_lib_json/main.cpp", "src/test_lib_json/jsontest.cpp", "src/test_lib_json/sconscript"])

。。。。。。。。。。。。。。。。。。。。。。。。很多(不是重点了)

提取下

g++ -o buildscons/linux-gcc-4.6/src/jsontestrunner/main.o -c -Wall -Iinclude -I. src/jsontestrunner/main.cpp
g++ -o buildscons/linux-gcc-4.6/src/lib_json/json_reader.o -c -Wall -Iinclude src/lib_json/json_reader.cpp
g++ -o buildscons/linux-gcc-4.6/src/lib_json/json_value.o -c -Wall -Iinclude src/lib_json/json_value.cpp
g++ -o buildscons/linux-gcc-4.6/src/lib_json/json_writer.o -c -Wall -Iinclude src/lib_json/json_writer.cpp
g++ -o buildscons/linux-gcc-4.6/src/lib_json/libjson_linux-gcc-4.6_libmt.so -shared buildscons/linux-gcc-4.6/src/lib_json/json_reader.o buildscons/linux-gcc-4.6/src/lib_json/json_value.o buildscons/linux-gcc-4.6/src/lib_json/json_writer.o -Llibs/linux-gcc-4.6 -lpthread

请大家将g++改为你的工具链  还有就是linux-gcc-4.6  是我的你的可能是其他,改好就是下面

arm-fsl-linux-gnueabi-gcc -o buildscons/linux-gcc-4.6/src/jsontestrunner/main.o -c -Wall -Iinclude -I. src/jsontestrunner/main.cpp
arm-fsl-linux-gnueabi-gcc -o buildscons/linux-gcc-4.6/src/lib_json/json_reader.o -c -Wall -Iinclude src/lib_json/json_reader.cpp
arm-fsl-linux-gnueabi-gcc -o buildscons/linux-gcc-4.6/src/lib_json/json_value.o -c -Wall -Iinclude src/lib_json/json_value.cpp
arm-fsl-linux-gnueabi-gcc -o buildscons/linux-gcc-4.6/src/lib_json/json_writer.o -c -Wall -Iinclude src/lib_json/json_writer.cpp
arm-fsl-linux-gnueabi-gcc -o buildscons/linux-gcc-4.6/src/lib_json/libjson_linux-gcc-4.6_libmt.so -shared buildscons/linux-gcc-4.6/src/lib_json/json_reader.o buildscons/linux-gcc-4.6/src/lib_json/json_value.o buildscons/linux-gcc-4.6/src/lib_json/json_writer.o -Llibs/linux-gcc-4.6 -lpthread

好了大家先将无意生成的主机动态库给删除或移出去自己用把,

find  ./  -name "*.so" -exec rm {}  \;

find ./  -name  "*.o"  -exec rm {}  \;

好了,编译一下ARM平台的动态库吧;

完了

find ./  -name "*.so"  

有了后大家可以 file 一下看看是不是ARM平台的

动态库放在 /usr/lib  下方便啦!

现在可以编译test程序了;

#include <iostream>
#include <string>
#include "json/json.h"
#include <fstream>


using namespace std;

int ParseJsonFromFile(const char* filename)
{
        Json::Reader reader;

        Json::Value root;


        std::ifstream is;
        is.open (filename, std::ios::binary );
        if (reader.parse(is, root))
        {
                std::string code;
                if (!root["files"].isNull())
                        code = root["uploadid"].asString();

 code = root.get("uploadid", "null").asString();

               int file_size = root["files"].size();
                for(int i = 0; i < file_size; ++i)
                {
                        Json::Value val_image = root["files"][i]["images"];
                        int image_size = val_image.size();
                        for(int j = 0; j < image_size; ++j)
                        {
                                std::string type = val_image[j]["type"].asString();
                                std::string url = val_image[j]["url"].asString();


                                cout << "type = " << type << endl;
                                cout << "url = " << url << endl;
                        }

                }
        }
        is.close();
        return 0;
}

int main()
{
        ParseJsonFromFile("file");
}
当前路径下有个file文件,内容是:

{"uploadid":"UP000000","code":"0","msg":"","files":[{"code":"0","msg":"","filename":"1D_16-35_1.jpg","filesize":"196690","width":"1024","height":"682","images":[{"url":"fmn061/20111118","type":"large","width":"720","height":"479"},{"url":"fmn061/2012222","type":"main","width":"200","height":"133"}]}]}

记得拷贝json.h头文件到相应的路径下。

动态库,

好了可以编译了arm-fsl-linux-gnueabi-g++ main.cpp  -ljsoncpp -L./    (动态库名太长改了,大家因地自宜啊!不罗嗦了)

好了可以移植到ARM 上了,记得加动态库,和file,运行就好了。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值