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项目交叉编译说明的主要内容,如果未能解决你的问题,请参考以下文章