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
解决