首页 > 其他分享 >cmake交叉编译

cmake交叉编译

时间:2023-07-20 20:23:18浏览次数:37  
标签:gnueabihf cmake 交叉 TinyXML2 编译 install linux arm

最近要把程序移植到armv7环境中,需要将程序和依赖库全部移植,因硬件资源有限,选择的是交叉编译的路线。

新建ubuntu 20.04的虚拟机,然后安装开发环境、交叉编译环境等工具。

安装c++编译工具
sudo apt install build-essential

安装工具:
sudo apt install make
sudo apt install unzip
sudo apt install cmake

安装交叉编译工具:
sudo apt install gcc-arm-linux-gnueabihf cpp-arm-linux-gnueabihf g++-arm-linux-gnueabihf binutils-arm-linux-gnueabihf

 

下一步是交叉编译依赖库,搜索了一圈,最后的方法是,新建一个cmake配置文件,内容为:

SET (CMAKE_SYSTEM_NAME arm_linux)
SET (CMAKE_SYSTEM_PROCESSOR armv7l)

SET (CMAKE_C_COMPILIER "/usr/bin/arm-linux-gnueabihf-gcc")
SET (CMAKE_CXX_COMPILER "/usr/bin/arm-linux-gnueabihf-g++")

 

然后编译依赖库时,使用的命令:

cmake -DCMAKE_TOOLCHAIN_FILE=arm-linux.cmake -DBUILD_SHARED_LIBS=ON ..

然后再make

因为是交叉编译,依赖库没有执行make install

对于依赖其他库的程序和库,需要在CMakelist.txt中增加依赖关系(以TinyXML2为例):

#先注释原find_package语句

#find_package(TinyXML2 CONFIG REQUIRED)

#实现find_package功能,主要是定义3个变量,然后把头文件和库文件路径加入到搜索路径中

set(TinyXML2_FOUND TRUE)
set(TinyXML2_INCLUDE_DIR ${THIRDPARTY_HOME}/tinyxml2-6.0.0)
set(TinyXML2_LIBRARY ${THIRDPARTY_HOME}/tinyxml2-6.0.0/build)
include_directories(${TinyXML2_INCLUDE_DIR})
link_directories(${TinyXML2_LIBRARY})

 

仅此记录一下今天收获。

 

标签:gnueabihf,cmake,交叉,TinyXML2,编译,install,linux,arm
From: https://www.cnblogs.com/strongbug/p/17569570.html

相关文章

  • iOS 反编译砸壳
    iOS反编译砸壳流程为了帮助这位刚入行的小白实现iOS反编译砸壳,我将为他详细介绍整个流程。下面是整个流程的步骤摘要:步骤内容1获取可执行文件2解密可执行文件3使用IDA进行反汇编4修改代码5重新打包现在,让我们逐步来完成这些步骤。步骤1:获取可执......
  • C/C++ 宏获取当前编译程序工作的CPU指令集平台(综合大全覆盖各类CPU)
    参考:https://blog.csdn.net/liulilittle/article/details/126644547?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-126644547-blog-43935465.235%5Ev38%5Epc_relevant_default_base3&dep......
  • Linux下编译安装实验
    目录一、编译安装1.编译安装过程2.编译安装实验一、编译安装1.编译安装过程2.编译安装实验去官网下载安装包文件,放到桌面上所示。把桌面上的安装包文件拖到Linux中,使用XShell软件。下载相关编译软件解压安装包到相应路径,查看configure./configure检测安装环境,......
  • 利用InnoStep在VS编译时自动构建安装包
    摘要很多同学在C/S开发领域或多或少都可能会遇到需要制作安装包的场景,打包的工具也是五花八门,例如有NSIS、InstallShield、WixToolset、ClickOnce等等,这里以InnoSetup为例简单演示下如何构建安装包,以及在VisualStudio中编译程序时自动去构建这个安装包。操作演示Tips:如果是......
  • 【linux】gcc编译选项:-fomit-frame-pointer,-fno-tree-vectorize,-fno-strict-aliasing
    Date:2018.9.81、参考https://www.cnblogs.com/islandscape/p/3444122.htmlhttps://blog.csdn.net/chdhust/article/details/8462414https://gcc.gnu.org/onlinedocs/gcc-6.2.0/gcc.pdfhttps://blog.csdn.net/u012927281/article/details/50999138https://blog.csdn.net/sof......
  • 首页 idea反编译class文件成为Java文件
    首页idea反编译class文件成为Java文件在开发过程中,我们经常会遇到需要查看其他人编写的Java类的情况。但是,有时候我们只能获取到编译好的class文件,而无法获得源代码。这个时候,如果我们能够将class文件反编译成Java文件,就能更方便地理解和分析代码了。本文将介绍如何使用IntelliJ......
  • msvc C++编译链接
    C++编译链接C++编译链接静态库编译CRunTimeLibrary链接过程动态库编译场景问题加深理解总结静态库编译CRunTimeLibraryC++是C的超集,CRunTimeLibrary是C标准库,在编译期安装的时候,或者下载vc运行时库安装到电脑中。msvc中/mt/mtd/md/mdd是决定当前......
  • (GCC) gcc编译选项 -Wl, -start-group,whole-archive,-Wl, Bstatic
    1.start-group编译选项假设程序x依赖三个静态库:libX1.a、libX2.a和libX3.a,而libX2.a又依赖libX1.a,libX3.a依赖libX2.a和libX1.a,正常情况下的CMakeLists.txt格式如下target_link_libraries(xlibX1.alibX2.alibX3.a)但也可以偷懒,不关心静态库的顺序问题,ld......
  • Android编译报错Caused by: java.lang.RuntimeException: Manifest merger failed wit
    Android编译报错Causedby:java.lang.RuntimeException:Manifestmergerfailedwithmultiple这种异常一般是引用了aar,如果项目中的manifestapplication配置和aar中不一样就会报错,比如android:icon和aar中不一致,则添加tools:replace="android:icon"配置即可。......
  • lua环境配置与编译
    1.背景2.安装lua官方下载地址:https://joedf.ahkscript.org/LuaBuilds/下载后解压即可 解压后: 配置环境变量: 检查是否安装成功: 如果能输出版本号,则表示配置成功.3.执行lua文件4.编译lua文件完美!......