交叉編譯jsoncpp靜態庫

2021-08-19 01:25:39 字數 3333 閱讀 4899

許多實用cmake的開源專案在移植到其他平台時,還是比較麻煩的。

這裡以jsoncpp為例。

首先,我本機的交叉編譯工具及目錄是:

# which arm-linux-gnueabihf-gcc

/root/board/tools/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux/bin/arm-linux-gnueabihf-gcc

從github上clone**:

# git clone
tool chain file例項

根據自己的配置改下如下:

# this one is important

set(cmake_system_name linux)

#this one not so much

set(cmake_system_version 1)

# specify the cross compiler

set(cmake_c_compiler /root/board/tools/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux/bin/arm-linux-gnueabihf-gcc)

set(cmake_cxx_compiler /root/board/tools/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux/bin/arm-linux-gnueabihf-g++)

set(cmake_strip /root/board/tools/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux/bin/arm-linux-gnueabihf-strip)

# where is the target environment

set(cmake_find_root_path /usr/arm-linux-gnueabihf)

# search for programs in the build host directories

set(cmake_find_root_path_mode_program never)

# for libraries and headers in the target directories

set(cmake_find_root_path_mode_library only)

set(cmake_find_root_path_mode_include only)

我的tool chain file儲存在~/ 下,名字為toolchain.cmake。

然後進入jsoncpp目錄:

# cd jsoncpp

# mkdir build

# cd build

在build目錄下執行:

cmake -dcmake_build_type=none -djsoncpp_lib_build_static=on -djsoncpp_lib_build_shared=on -dcmake_install_prefix=/usr/arm-linux-gnueabihf -dcmake_toolchain_file=~/toolchain.cmake -g "unix makefiles" ..
如果出現錯誤,請檢測tool chain file和上面命令引數和你本機是否相符。

在build下生成:

cmakecache.txt  cmake_install.cmake  include   pkg-config

cmakefiles ctesttestfile.cmake makefile src

在build目錄下執行make:

# make

scanning dependencies of target jsoncpp_lib_static

[ 11%] building cxx object src/lib_json/cmakefiles/jsoncpp_lib_static.dir/json_reader.cpp.o

[ 22%] building cxx object src/lib_json/cmakefiles/jsoncpp_lib_static.dir/json_value.cpp.o

/mnt/win/src.emb/scanner/vendor/jsoncpp/src/lib_json/json_value.cpp: in copy constructor 『json::value::czstring::czstring(const json::value::czstring&)』:

/mnt/win/src.emb/scanner/vendor/jsoncpp/src/lib_json/json_value.cpp:275:78: warning: conversion to 『unsigned char:2』 from 『unsigned int』 may alter its value [-wconversion]

[ 33%] building cxx object src/lib_json/cmakefiles/jsoncpp_lib_static.dir/json_writer.cpp.o

[ 44%] linking cxx static library libjsoncpp.a

[ 44%] built target jsoncpp_lib_static

scanning dependencies of target jsontestrunner_exe

[ 55%] building cxx object src/jsontestrunner/cmakefiles/jsontestrunner_exe.dir/main.cpp.o

[ 66%] linking cxx executable jsontestrunner_exe

[ 66%] built target jsontestrunner_exe

scanning dependencies of target jsoncpp_test

[ 77%] building cxx object src/test_lib_json/cmakefiles/jsoncpp_test.dir/jsontest.cpp.o

[ 88%] building cxx object src/test_lib_json/cmakefiles/jsoncpp_test.dir/main.cpp.o

[100%] linking cxx executable jsoncpp_test

libjsoncpp.a已經生成。

CentOS編譯安裝jsoncpp庫

1.安裝scons 2.安裝jsonspp 解壓 進入目錄 安裝 檢視是否成功 tar zxvf scons 2.5.1.tar.gz cd scons 2.5.1 python setup.py install scons v 解壓 進入目錄 編譯 tar zvxf jsoncpp src 0.5...

交叉編譯環境下靜態庫動態庫的載入

現在做的這個專案用到的是開發板是mips晶元,所以無論是在編譯我自己的源 時,還是對方的靜態庫,我都要使用mips的gcc,也就是在我的pc裝好交叉編譯環境。交叉編譯環境的概念 在pc平台上裝上特定嵌入式開發的編譯環境,對於嵌入式開發的源 可以用其編譯環境在pc平台上編譯源 交叉編譯時候如何配置連線...

boost庫交叉編譯

1.環境 linux系統 ubuntu 14.04 編譯工具 arm fsl linux gnueabi gcc 3.編譯 1 解壓,cd 到目錄 show libraries可檢視所有庫,如下 使用 without libraries 逗號隔開去掉不想編譯的庫,prefix 指定編譯後的安裝路徑 ...