許多實用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 指定編譯後的安裝路徑 ...