0
点赞
收藏
分享

微信扫一扫

jsoncpp交叉编译、配置、测试和遇到的问题

凛冬已至夏日未远 2022-03-11 阅读 82
C++

jsoncpp交叉编译、配置、测试和遇到的问题

flyfish

环境:

Ubuntu18.04
cmake-gui
Cmake 3.10.2

启动cmake-gui
终端执行 cmake-gui
设置源码路径和构建二进制路径
点击config,设置交叉编译选项
在这里插入图片描述
点击next后,设置交叉编译环境
在这里插入图片描述
设置最后安装的路径
即配置CMAKE_INSTALL_PREFIX,设置最后include和lib的所在的路径,配置完之后点击Generate
在这里插入图片描述
进入build目录执行make -j4
在这里插入图片描述
最后执行make install安装
在这里插入图片描述
在自己的程序中建立jsoncpp文件夹,将上面的install里面的include和lib拷贝其中

CMakeList.txt的配置

set(JSONCPP_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/jsoncpp/include)
include_directories(${JSONCPP_INCLUDE_DIR})
set(JSONCPP_LIBRARIES ${CMAKE_CURRENT_SOURCE_DIR}/jsoncpp/lib/libjsoncpp.so)

#json test
add_executable(jsontest
    stringWrite.cpp
    )
target_link_libraries(jsontest
    ${JSONCPP_LIBRARIES}
    )

stringWrite.cpp文件内容用于测试

#include "json/json.h"
#include <iostream>
int main() {
  Json::Value root;
  Json::Value data;
  constexpr bool shouldUseOldWay = false;
  root["action"] = "run";
  data["number"] = 1;
  root["data"] = data;

  if (shouldUseOldWay) {
    Json::FastWriter writer;
    const std::string json_file = writer.write(root);
    std::cout << json_file << std::endl;
  } else {
    Json::StreamWriterBuilder builder;
    const std::string json_file = Json::writeString(builder, root);
    std::cout << json_file << std::endl;
  }
  return EXIT_SUCCESS;
}

编译结果生成jsontest文件,将该文件在嵌入式系统中运行
结果

{
	"action" : "run",
	"data" : 
	{
		"number" : 1
	}
}

遇到的问题
在嵌入式设置中运行jsontest提示

./jsontest: error while loading shared libraries: libjsoncpp.so.25: file too short

链接问题
在lib所在路径中执行

ln -s  libjsoncpp.so.1.9.5 libjsoncpp.so.25

解决

举报

相关推荐

0 条评论