zoukankan      html  css  js  c++  java
  • 使用 cmake 进行交叉编译

    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++)
  • 相关阅读:
    IO复用三种方式
    sql server如何通过pivot对数据进行行列转换(进阶)
    sql server排序规则冲突问题解决
    sql server如何通过pivot对数据进行行列转换
    sql server如何通过排序控制insert into ... select ... 语句的记录插入顺序
    sql server如何用不同语种语言显示报错的错误消息
    Python编程求解第1天1分钱之后每天两倍持续一个月的等比数列问题
    sql server临时删除/禁用非聚集索引并重新创建加回/启用的简便编程方法研究对比
    sql server通过临时存储过程实现使用参数添加文件组脚本复用
    sql server重建全库索引和更新全库统计信息通用脚本
  • 原文地址:https://www.cnblogs.com/pied/p/8805883.html
Copyright © 2011-2022 走看看