clion中C项目交叉编译说明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了clion中C项目交叉编译说明相关的知识,希望对你有一定的参考价值。

参考技术A 1、  在项目的CMakeLists.txt的开始处加上如下图所示配置(配置中的目录为你需要编译器的目录),平时开发调试的时候,设置SET( CROSS_COMPILE 0 ) 即不启用交叉编译。

2、 交叉编译:首先SET( CROSS_COMPILE  1),然后把项目通过scp传输到linux虚拟机或者服务器上

3、执行 cmake /path/your/project (项目根目录),这一步会生成交叉环境配置的Makefile

4、 在项目根目录,执行 make ,这一步会生成和项目名同名的可执行文件demo中为hello

5、Scp可执行文件到开发版,运行可执行文件。

SET( CROSS_COMPILE 1 )

IF ( CROSS_COMPILE )

    SET(

CMAKE_SYSTEM_NAME linux )

    SET(

TOOLCHAIN_DIR " /home/sz/project/arm-linux-gnueabihf ")

# specify the cross compiler

    SET( CMAKE_C_COMPILER   $ TOOLCHAIN_DIR /bin/arm-linux-gnueabihf-gcc )

    SET(

CMAKE_CXX_COMPILER $ TOOLCHAIN_DIR /bin/arm-linux-gnueabihf-g++ )

    SET(

GNU_FLAGS " -mfpu=vfp -fPIC ")

    SET(

CMAKE_CXX_FLAGS " $ GNU_FLAGS ")

    SET(

CMAKE_C_FLAGS " $ GNU_FLAGS   ")

# where is the target environment

    SET( CMAKE_FIND_ROOT_PATH  $ TOOLCHAIN_DIR

            $ TOOLCHAIN_DIR /arm-linux-gnueabihf/include

            $ TOOLCHAIN_DIR /arm-linux-gnueabihf/lib )

# search for programs in the build host directories (notnecessary)

    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 )

ENDIF ( CROSS_COMPILE )

在 ARM 平台上为嵌入式 Linux 交叉编译 Clion

【中文标题】在 ARM 平台上为嵌入式 Linux 交叉编译 Clion【英文标题】:Crosscompile Clion for Embeded Linux on ARM platform 【发布时间】:2017-04-27 08:05:13 【问题描述】:

我是 Linux 和 Clion 交叉编译的新手,我在 clion 中有一个脚本,并将其构建为 sh 文件以在 ubuntu 16 中运行。它运行完整,但是当我想在 Debian 上运行它时,它不起作用并显示“不能执行二进制文件”。如何在任何 Linux 版本中运行 sh 文件或 clion 脚本?

【问题讨论】:

我的 Linux 在 Nanopi2 fire board 上运行 你有arm架构的编译器吗?因为clion 通常采用CXX 定义的任何内容,可能是GNU c++ @hagard 你需要给cmake添加一个工具链,类似github.com/taka-no-me/android-cmake 【参考方案1】:

我解决了。 在 Clion 中编码并将其保存为 .cpp 扩展名(或 .c、.cc)后,只需使用 ARM gcc 或 g++(对我来说是 arm-linux-gnueabihf-g++)进行编译并为 ARM 平台制作二进制文件。谢谢给cmets。

【讨论】:

你可以从命令行做同样的事情,这并不能解决问题,clion在这个解决方案中没有用

以上是关于clion中C项目交叉编译说明的主要内容,如果未能解决你的问题,请参考以下文章

编译工具链和交叉编译工具链简易说明

windows eclipse c++怎么交叉编译linux

交叉编译 gcc

交叉编译C++树莓派标准错误

关于openssl的交叉编译

cmake交叉编译参数toolchain