使用 cmake 进行交叉编译
2018-04-12 10:35
841 查看
cmake 因为“又”要额外学一门语言而被诟病,但这并不妨碍越来越多私人项目用 cmake 来管理;autoconfig 确实是更好的发行工具,但用 cmake 管理项目显然更加的容易。如果要应用这些 cmake 管理的项目到嵌入式环境中,必然涉及交叉编译的问题。
这些项目交叉编译,主要是设置一些环境变量。
这些设定可以写成一个 .cmake 文件,1) 需要交叉编译时 include ,2)或者直接把这些配置写到 CMakeLists.txt 文件的开始位置。两种方法是等效的。
用下面语句应用写好的配置。
include (cross.cmake)
下面是收集的几个针对 arm 平台的交叉编译配置,参考这两个配置,根据自己平台的不同,进行定制修改即可。(感觉直接制定编译器即可?待验证)
配置1
SET(CROSS_COMPILE 1) IF(CROSS_COMPILE) SET(CMAKE_SYSTEM_NAME Linux) SET(TOOLCHAIN_DIR "/home/zchx/Tools/opt/FriendlyARM/toolschain/4.5.1") set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-g++) set(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gcc) set(GNU_FLAGS "-mfpu=vfp -fPIC") set(CMAKE_CXX_FLAGS "${GNU_FLAGS} ") set(CMAKE_C_FLAGS "${GNU_FLAGS} ") SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR} ${TOOLCHAIN_DIR}/arm-none-linux-gnueabi/include ${TOOLCHAIN_DIR}/arm-none-linux-gnueabi/lib ) include_directories(/usr/local/Trolltech/QtEmbedded-4.8.5-arm/include/) include_directories(/home/zchx/Downloads/boost_1_49_0_arm) link_directories(/home/zchx/Downloads/boost_1_49_0_arm/stage/lib) link_directories(/home/zchx/Downloads/ffmpeg-1.0.8-arm/ffmpeglib/) link_directories(/usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib) link_directories(/home/zchx/Downloads/live_arm/BasicUsageEnvironment/) link_directories(/home/zchx/Downloads/live_arm/groupsock/) link_directories(/home/zchx/Downloads/live_arm/liveMedia/) link_directories(/home/zchx/Downloads/live_arm/UsageEnvironment/) ENDIF(CROSS_COMPILE)
配置2
#告知当前使用的是交叉编译方式,必须配置 SET(CMAKE_SYSTEM_NAME Linux) #指定编译工具,一定要设置 #或交叉编译器使用绝对地址 SET(CMAKE_C_COMPILER "arm-linux-gcc") #指定C++交叉编译器 SET(CMAKE_CXX_COMPILER "arm-linux-g++") #不一定需要设置 #指定交叉编译环境安装目录... SET(CMAKE_FIND_ROOT_PATH "...") #从来不在指定目录下查找工具程序 SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) #只在指定目录下查找库文件 SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) #只在指定目录下查找头文件 SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
配置3
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm) SET(TOOLCHAIN_DIR "/opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le") SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR}) SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) SET(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/arm_v5t_le-gcc) SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/arm_v5t_le-g++)
相关文章推荐
- 在Linux平台上使用Cmake进行交叉编译替代嵌入式平台所使用的Makefile
- GDB arm-linux交叉编译移植和使用方法(特别是对于正在运行的程序或者段错误的程序进行分析)
- 在windows环境下,使用Eclipse和gcc-Linaro工具链,对BeagleBone进行交叉编译和远程部署
- 用CMake代替makefile进行跨平台交叉编译
- 交叉编译环境以及开发板上-/bin/sh: ./hello: not found(使用arm-linux-gcc -static -o 来进行静态编译)
- windows下使用Cmake和VC 2013安装mongodb C driver Windows下安装mongodb的C语言程序驱动必须借助交叉编译软件CMake,但是官网上的文档对于一些
- GDB arm-linux交叉编译移植和使用方法(特别是对于正在运行的程序或者段错误的程序进行分析)
- 使用cmake交叉编译opencv
- 【原+转】用CMake代替makefile进行跨平台交叉编译
- 从现在开始,使用Cmake进行编译OAI
- 在windows环境下,使用Eclipse和gcc-Linaro工具链,对BeagleBone进行交叉编译和远程部署
- linux下使用CmakeLists.txt生成makefile文件进行编译
- 用CMake代替makefile进行跨平台交叉编译
- OpenCV3.2使用Cmake进行编译时注意事项
- 用CMake代替makefile进行跨平台交叉编译
- 使用GDB源码进行交叉编译
- [置顶] 脱离AS在windows下使用CMake交叉编译for Android
- Cmake编译OpenCV和如何在VS工程中配置来使用编译后的OpenCV进行跟踪调试问题
- googletest进行单元测试(使用cmake编译)
- 在ubuntu下使用cmake进行opencv的配置和Windows下进行使用cmake编译源代码