您的位置:首页 > Web前端 > JavaScript

json移植到ARM板

2015-11-04 09:27 495 查看
工具有: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,运行就好了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: