cygwin cmake 交叉编译
- 格式:docx
- 大小:11.13 KB
- 文档页数:2
xmake从⼊门到精通9:交叉编译详解xmake是⼀个基于Lua的轻量级现代化c/c++的项⽬构建⼯具,主要特点是:语法简单易上⼿,提供更加可读的项⽬维护,实现跨平台⾏为⼀致的构建体验。
除了win, linux, macOS平台,以及android, ios等移动端平台的内建构建⽀持,xmake也⽀持对各种其他⼯具链的交叉编译⽀持,本⽂我们将会详细介绍下如何使⽤xmake进⾏交叉编译。
交叉编译⼯具链简介通常,如果我们需要在当前pc环境编译⽣成其他设备上才能运⾏的⽬标⽂件时候,就需要通过对应的交叉编译⼯具链来编译⽣成它们,⽐如在win/macos上编译linux的程序,或者在linux上编译其他嵌⼊式设备的⽬标⽂件等。
通常的交叉编译⼯具链都是基于gcc/clang的,⼤都具有类似如下的结构:/home/toolchains_sdkdir- bin- arm-linux-armeabi-gcc- arm-linux-armeabi-ld- ...- lib- libxxx.a- include- xxx.h每个⼯具链都有对应的include/lib⽬录,⽤于放置⼀些系统库和头⽂件,例如libc, stdc++等,⽽bin⽬录下放置的就是编译⼯具链⼀系列⼯具。
例如:arm-linux-armeabi-ararm-linux-armeabi-asarm-linux-armeabi-c++arm-linux-armeabi-cpparm-linux-armeabi-g++arm-linux-armeabi-gccarm-linux-armeabi-ldarm-linux-armeabi-nmarm-linux-armeabi-strip其中arm-linux-armeabi-前缀就是cross,通过⽤来标⽰⽬标平台和架构,主要⽤于跟主机⾃⾝的gcc/clang进⾏区分。
⾥⾯的gcc/g++就是c/c++的编译器,通常也可以作为链接器使⽤,链接的时候内部会去调⽤ld来链接,并且⾃动追加⼀些c++库。
《深入探讨cmake交叉编译eigen的方法与应用》一、引言在现代软件开发中,交叉编译已成为不可或缺的技术之一。
它允许开发人员在一个主机评台上构建和运行代码,然后将生成的可执行文件或库部署到不同的目标评台上。
而对于C++开发者来说,eigen是一个十分常用的线性代数库,那么如何使用cmake进行eigen库的交叉编译呢?本文将就这一问题展开深入探讨。
二、cmake交叉编译eigen库的基本原理让我们简要介绍一下eigen库。
eigen是一个C++模板库,提供了线性代数、矩阵运算和向量运算的功能。
它以头文件形式存在,非常易于集成到任何C++项目中。
而cmake则是一个跨评台的构建工具,它可以自动生成各种不同评台上的构建脚本,使得软件的构建过程变得更加简单和高效。
在进行cmake交叉编译eigen库时,我们首先需要明确目标评台的信息,如目标处理器架构、操作系统类型、编译器等。
然后在CMakeLists.txt文件中,通过设置CMAKE_SYSTEM_NAME、CMAKE_SYSTEM_PROCESSOR等变量,告诉cmake我们的目标评台信息。
接着使用find_package命令来寻找eigen库,通过设置eigen_INCLUDE_DIRS变量来指定eigen库的头文件路径。
将eigen_INCLUDE_DIRS添加到目标工程的include路径中,即可在交叉编译环境中使用eigen库。
三、深入探讨cmake交叉编译eigen库的实际操作在实际操作中,我们可能会遇到一些复杂的情况,比如目标评台与主机评台的操作系统类型不同、目标评台使用交叉编译器等。
这时,我们需要对CMakeLists.txt文件进行更加细致的配置。
我们需要根据不同的目标评台类型设置CMAKE_SYSTEM_NAME变量,比如针对嵌入式Linux系统可以设置为"Linux"。
然后根据不同的目标处理器架构设置CMAKE_SYSTEM_PROCESSOR变量,比如针对ARM处理器可以设置为"arm"。
MinGW32和64位交叉编译环境的安装和使⽤原⽂出处:CompileGraphics Magick, Boost, Botan and QT with MinGW64 under Windows 7 641 安装MSYS从下⾯的地址下载并运⾏:mingw-get-inst-20120426.exe按下⾯的选项和⽬录位置安装:安装完毕之后运⾏下⾯的命令⾏:C:\DEVPACK\MinGW\msys\1.0\msys.bat逐条输⼊下⾯的语句,执⾏安装软件包:[plain]1. $ mingw-get install msys-rxvt2. $ mingw-get install msys-wget3. $ mingw-get install msys-zip4. $ mingw-get install msys-unzip5. $ mingw-get install msys-xz右键点击⽂件C:\DEVPACK\MinGW\msys\1.0\msys.bat,在桌⾯上创建快捷⽅式, 并在"msys.bat - 快捷⽅式" 上点击右键, 按下图修改快捷⽅式的属性:2 安装rubenvb MinGW-w641)从下⾯的链接进⼊下载页⾯:下载(为64位Windows编译原⽣64位):2)从下⾯的链接进⼊下载页⾯:下载(为32位Windows编译,也可以运⾏在Win64上):包的命名规范是:[i686-w64-mingw32]-[gcc-4.8.0]-[win64]_rubenvb[⽬标平台]-[gcc-4.8.0]-[⼯具链OS]_rubenvb⽬标平台指MinGW最终编译好的⼆进制代码运⾏的平台,[i686...]表⽰Win32平台,[x86_64-...]表⽰Win64平台。
⼯具链OS表⽰你安装MinGW的计算机OS。
例如,如果想在WinXP32位平台上编译运⾏于Win7 64位平台的程序或库(dll),需要选择:x86_64-w64-mingw32-gcc-4.8.0-win32_rubenvb.7z。
QGIS编译指南1.准备工作在编译QGIS之前,需要确保系统中已经安装了一些必要的软件。
首先,需要安装一个C++编译器。
在Windows系统中,常用的编译器有MSVC、MinGW和Cygwin。
在Linux系统中,一般选择GCC作为编译器。
此外,还需要安装CMake、Python和Qt等工具。
2.获取源代码3.设置编译环境在编译之前,需要设置一些编译环境变量。
在Windows系统中,可以使用vcvarsall.bat或者相应的脚本来设置编译环境。
在Linux系统中,可以在终端中使用export命令来设置编译环境变量。
4.配置编译选项在开始编译之前,需要对编译选项进行配置。
使用CMake来配置编译选项,比如指定源代码路径、编译器类型、安装路径等。
可以根据自己的需求进行相应的配置。
5.编译源代码在配置好编译选项之后,可以开始编译源代码了。
在Windows系统中,可以使用Visual Studio来编译,或者使用MinGW等工具。
在Linux系统中,可以使用make命令进行编译。
6.安装QGIS编译完成后,可以将编译生成的文件安装到系统中。
在Windows系统中,可以直接运行编译生成的可执行文件进行安装。
在Linux系统中,可以使用make install命令进行安装。
7.配置环境变量在安装完成后,需要将QGIS的安装路径加入到系统的环境变量中,以便系统可以找到QGIS的相关文件。
8.测试QGIS安装完成后,可以打开QGIS进行测试,确保编译生成的版本可以正常运行,并且满足自己的需求。
以上就是编译QGIS的一般过程和步骤。
在编译QGIS时,需要注意一些依赖库的安装以及编译选项的配置。
根据系统的不同,编译过程可能会有所区别。
因此,在具体编译过程中,还需要根据实际情况进行相应的调整和操作。
编译QGIS可能会遇到一些问题,比如依赖库缺失、编译错误等。
在遇到问题时,可以查阅相应的文档和网上资源,或者向QGIS开发者社区寻求帮助。
Qt CMake 交叉编译什么是Qt?Qt是一个跨平台的应用程序开发框架,由Digia公司(前Nokia)开发并维护。
它允许开发人员使用C++编写应用程序,提供一系列丰富的工具和类库,简化了跨平台开发的过程。
Qt的特点包括:面向对象的编程模型、信号和槽机制、图形用户界面设计工具(Qt Designer)、多线程支持、数据库访问、网络编程等。
由于其跨平台特性,Qt可以在不同的操作系统上运行,如Windows、macOS、Linux等,也可以用于开发移动应用程序。
什么是CMake?CMake是一个跨平台的开源构建工具,用于构建、测试和打包软件。
它使用一个配置文件(CMakeLists.txt)来描述项目的构建过程,可以生成多种不同的构建系统的构建文件(如Makefile、Visual Studio项目文件等)。
CMake的特点包括:简化的语法、模块化设计、多个编程语言的支持(如C++、Java、Python等)、自动依赖管理、可扩展性等。
CMake可以与各种构建系统集成,如Make、Ninja等,也可以生成适用于不同平台的构建脚本。
什么是交叉编译?交叉编译是指在一台计算机上使用一个编译器(称为主机编译器),为另一种不同平台的目标计算机生成可执行文件。
这种编译过程通常涉及到操作系统、CPU架构等的差异。
交叉编译的优势包括:提供开发效率、节省开发时间、充分利用现有资源等。
通过交叉编译,开发人员可以在一台计算机上开发和测试适用于多个平台的应用程序,并将最终的可执行文件部署到目标平台上。
Qt和CMake的结合Qt提供了自己的构建工具qmake,可以用于编译和构建Qt应用程序。
然而,使用CMake可以提供更大的灵活性和自由度,特别是在多平台、多项目的开发环境中。
使用CMake构建Qt应用程序的好处包括:1.跨平台支持:CMake可以生成适用于不同操作系统的构建文件,使得开发人员可以在不同平台上构建和测试应用程序。
Cygwin下用crosstool-ng 编译交叉工具链的常见错误及解决办法2011-02-28 21:221、配置crosstool-ng产生的错误1.1 ncurses headers files were not foundChecking for 'ncurses/ncurses.h'... noChecking for 'ncurses/curses.h'... noChecking for 'ncurses.h'... noChecking for 'curses.h'... noncurses headers files were not found解决方法:安装:ncurses,、libncurses-devel1.2 flex none foundChecking for 'flex'... Noflex: none foundEither you are missing entirely the needed tool,or the version you have is too old.configure: Bailing out...解决方法:安装:flex,flexdll1.3 automake 1.10 or above was not foundChecking for 'automake'... noautomake 1.10 or above was not foundEither you are missing entirely the needed tool,or the version you have is too old.configure: Bailing out...解决方法:安装:automake1.4 libtool 1.5.26 or above was not foundChecking for 'libtool'... nolibtool 1.5.26 or above was not foundEither you are missing entirely the needed tool,or the version you have is too old.You can give the path to this tool using: --with-libtool=PATHconfigure: Bailing out...解决方法:安装:libtool注:在配置crosstool-NG时,出现的类似“XXX:none found”的错误,都可以是该工具没有安装,把该工具安装上,重新配置即可。
ITK介绍ITK: The Insight Segmentation and Registration T oolkit一、ITK简介ITK是美国国家卫生院下属的国立医学图书馆开发的一款医学图像处理软件包, 是一个开源的软件,用于处理图像配准和分割的问题。
ITK是用C++实现的,能够跨平台,并用CMake来管理编译过程来保证编译过程独立于平台。
除此以外,它还使用一种叫做卷的处理过程,来产生C++和其他其他解释程序之间的接口,从而使得开发者能用各种不同的程序语言来开发。
ITK的C++执行风格是基于广义(generic programming)编程,也就是说他使用的是模板来保证相同的代码能广泛的应用于任何类或者类型。
这种C++模板的方式使得编码过程很高效,并且使很多软件的问题在编译的时候就发现了,而不是在运行的时候。
由于ITK 是一个开源的工程,因此来自世界各地的开发者都可以使用、调试、维护以及扩展这个软件。
ITK使用一种叫做极限编程的思想来开发的。
极限编程颠覆了传统软件编程的思想,它采用不断同时反复的进行设计-执行-测试-发布的过程。
极限编程的核心特征是交流和测试。
二、ITK简史在1999年,美国国立卫生研究院国立医学图书管授予表彰六位合作者在开发开源的图像配准和分割工具包做出的贡献。
他们的工作最后成为大家公认的ITK,并形成了最基本的Insight Software联盟。
ITK的NIH/NLM 项目经理是Dr.Terry Yoo由他协调这六位最初的合作者组建Insight 联盟。
这些联盟成员中有三位是商业合作者,有三位来自学术机构(南加州大学,田纳西大学,明尼苏达大学)。
但直到2002年的时候第一个正式的公共ITK 发行版本出台。
三、ITK的配置ITK通过CMake来解决跨平台的编译问题,CMake能够控制软件编译的过程通过使用简单的平台和独立于编译器的配置文件,它能生成本地的Makefile和工作空间从而用于你选择的编译环境。
mingw 交叉编译摘要:1.什么是Mingw 交叉编译2.Mingw 交叉编译的原理与应用场景3.如何使用Mingw 进行交叉编译4.交叉编译中的注意事项正文:随着嵌入式系统和物联网的快速发展,交叉编译技术在软件开发中越来越重要。
Mingw 作为一种流行的Windows 编译工具链,可以用于交叉编译Linux 应用程序和嵌入式系统软件。
本文将介绍Mingw 交叉编译的原理、应用场景、使用方法和注意事项。
一、什么是Mingw 交叉编译Mingw(Minimalist GNU for Windows)是一个针对Windows 平台的轻量级GNU 编译器集合。
Mingw 交叉编译指的是使用Mingw 编译器在Windows 平台上编译出适用于其他操作系统(如Linux 和嵌入式系统)的软件。
Mingw 本身包含了一系列编译工具,如GCC、G++、Clang 等,可以支持多种编程语言的编译。
二、Mingw 交叉编译的原理与应用场景Mingw 交叉编译的原理是利用Mingw 中的编译器将源代码编译为目标操作系统的可执行文件。
在这个过程中,需要解决目标操作系统与Windows 平台之间的差异,如架构、内存布局、库函数等。
Mingw 交叉编译的应用场景主要包括:1.在Windows 平台上开发Linux 应用程序:开发者可以使用Mingw 编译器编写Linux 应用程序,然后将其交叉编译为Linux 系统可执行文件。
2.嵌入式系统开发:利用Mingw 交叉编译器,开发者可以在Windows 平台上开发针对嵌入式系统的软件,并将其编译为嵌入式系统所需的二进制文件。
3.跨平台软件开发:通过Mingw 交叉编译,开发者可以实现一套源代码同时在多个平台上运行,提高代码复用率。
三、如何使用Mingw 进行交叉编译在使用Mingw 进行交叉编译之前,需要确保已安装Mingw 编译器和相关工具。
以下是使用Mingw 进行交叉编译的基本步骤:1.编写源代码:根据目标平台的需求,编写相应的源代码。
【原+转】⽤CMake代替makefile进⾏跨平台交叉编译 在开始介绍如何使⽤CMake编译跨平台的静态库之前,先讲讲我在没有使⽤CMake之前所趟过的坑。
因为很多开源的程序,⽐如png,都是⾃带编译脚本的。
我们可以使⽤下列脚本来进⾏编译:./configure --prefix=/xxx/xx --enable-static=YESmakemake install 相信⼿动在类Unix系统上⾯编译过开源程序的同学对上⾯的命令肯定⾮常熟悉。
更悲惨的是,有些开源库是不提供configure配置⽂件的,只有⼀个Makefile或者Makefile.gcc。
我的体会是,Makefile是⼀个很复杂的东西,没有⼀定的积累我们是看不懂的,更别说去修改它了。
⽽本⽂的CMake可以更傻⽠更简单地达到我们的⽬的,你不需要理会复杂的makefile语法。
Just follow me! 如果不配置编译器和⼀些编译、链接参数,这样的操作,最后编译出来的静态库只能在本系统上⾯被链接使⽤。
⽐如你在mac上⾯运⾏上⾯的命令,编译出来的静态库就只能给mac程序链接使⽤。
如果在Linux上⾯运⾏上述命令,则也只能给Linux上⾯的程序所链接使⽤。
如果我们想要在Mac上⾯编译出ios和android的静态库,就必须要⽤到交叉编译。
要进⾏交叉编译,⼀般来说要指定⽬标编译平台的编译器,通常是指定⼀个CC环境变量,根据编译的是c库还是c++库,要分别指定C_flags和CXX_flag,当然还需要指定c/c++和系统sdk的头⽂件包含路径。
总之,⾮常之繁琐。
为什么要使⽤CMake 为什么我们不使⽤autoconf?为什么我们不使⽤QMake,JAM,ANT呢?具体原因⼤家可以参考我在本⽂最后的参考链接⾥⾯的⼀书的第⼀章。
我⾃⼰使⽤CMake的感受就是:我原来编写bash,配置configure参数,读各个开源库的INSTALL⽂件(因为不同库的configure参数有差别),配置各种编译flag,头⽂件包含等。
【wireshark】开发环境搭建1. 引⾔本⽂相关内容可参考Wireshark开发指南第2章”Quick Setup”要对wireshark代码进⾏修改,除了下⽂介绍的lua插件的⽅式以外,都需要对wirehshark源码进⾏编译(C外置解析插件不需要编译整个wireshark,都需要下载wireshark源码及需要的库),因此有必要学习如何搭建Wireshark开发环境。
本⽂主要介绍在Windows下编译Wireshark 64位版本的⽅法和步骤,Mac OSX上的情况稍做了介绍。
下⾯开始按顺序分⼩节介绍编译步骤,内容以Wireshark 1.12.x和1.99.x版本为依据,其他较旧版本⼤同⼩异。
2. Windows2.1 下载源码源码压缩包:Git(应该是主线):git clone https:///review/wireshark2.2 准备Visual C++要编译wireshark,开发电脑上应该安装了Visual Studio并包括了Visual C++,请⾄少安装Visual Studio 2010以减少不必要的⿇烦。
2.3 安装Qt (Optional)到下载与你的Visual Studio版本及处理器结构相对应的Qt版本。
注意,⽬前Qt官⽅安装包只对Visual Studio 2013提供了64bit⽀持,要使⽤Visual Studio 2010编译Wireshark,需要下载Qt opensource源码并⾃⾏编译为64⼆进制库。
2.4 准备PowerShell (Optional)在Win7之前的旧系统上编译Wireshark新版本需要安装PowerShell。
2.5 安装Cygwin及相关包到/下载Cygwin的安装程序,执⾏在线安装,后⾯将会看到,如果使⽤旧的Cygwin版本,可能会导致错误。
安装时根据提⽰,选中以下包(*号为可选项):Archive/unzip*Archive/zip (only needed if you intend to build the U3 package)Devel/bisonDevel/flex*Devel/subversion (optional - see discussion about using Subversion below)Interpreters/perlUtils/patchWeb/wget假设其安装到C:\Cygwin64。
libbctoolbox 交叉编译摘要:1.介绍libbctoolbox2.交叉编译的概念和方法3.使用libbctoolbox 进行交叉编译的实例4.结论正文:libbctoolbox是一个用于C/C++开发的工具箱,它提供了许多方便的功能,如内存管理、日志记录和线程管理等。
在嵌入式系统开发中,交叉编译是一个重要的环节。
通过交叉编译,我们可以在开发机上编译出目标机可执行的代码。
交叉编译是指在宿主机上使用交叉编译工具链编译目标机的可执行代码。
与直接编译相比,交叉编译可以使开发者更方便地开发目标机的应用程序,同时减少目标机与宿主机之间的代码传递,提高开发效率。
libbctoolbox 提供了一种简便的交叉编译方法。
下面是一个简单的例子,展示如何使用libbctoolbox 进行交叉编译。
假设我们要为一台基于ARM Cortex-A9 的嵌入式系统编译一个简单的C 程序,首先需要安装适用于ARM Cortex-A9 的开发工具链,例如GCC、GDB 等。
接下来,使用以下命令创建一个交叉编译工具链的配置文件:```bashmkdir -p ~/toolchaincd ~/toolchaincmake -G "NMake Makefiles" -DCMAKE_SYSTEM_NAME=arm-linux -DCMAKE_C_COMPILER=arm-linux-gnueabi-gcc -DCMAKE_CXX_COMPILER=arm-linux-gnueabi-g++ -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY_INCLUDE_DIRS -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY_INCLUDE_DIRS -DCMAKE_INSTALL_PREFIX=~/toolchain -DCMAKE_BUILD_TYPE=Release ```然后,使用以下命令进行编译:```bashcmake --build.```编译完成后,我们可以使用以下命令在目标机上运行编译得到的可执行文件:```bashscp ~/toolchain/bin/my_program /path/to/target/machine/chmod 755 /path/to/target/machine/my_program./my_program```通过以上步骤,我们可以使用libbctoolbox 进行简单的交叉编译。
onlyoffice交叉编译-回复OnlyOffice是一款全功能的协同办公套件,可在各种操作系统上运行。
本文将详细介绍如何进行OnlyOffice的交叉编译,以及所需的步骤和注意事项。
交叉编译是一种将代码从一种平台(即主机平台)编译到另一种平台(即目标平台)的过程。
这对于在不同操作系统或架构上运行代码非常有用。
OnlyOffice是一个多平台应用程序,可以在Windows、Linux和MacOS上运行。
交叉编译允许我们为特定的目标平台生成可执行文件。
在进行OnlyOffice的交叉编译之前,需要满足一些先决条件。
首先,确保已经安装了交叉编译工具链。
对于Linux用户,可以使用开源的gcc 或Clang来完成交叉编译。
对于Windows用户,可以安装MSYS2,并使用其中提供的交叉编译工具链。
此外,还需要获得OnlyOffice的源代码。
可以从官方网站或GitHub上下载OnlyOffice的开源版本。
另外,为了进行交叉编译,还需要了解目标平台的系统架构和操作系统版本。
在获得所需的工具和资源后,下一步是设置交叉编译环境。
对于Linux 用户,可以使用shell脚本来设置环境变量。
对于Windows用户,可以使用MSYS2的命令行终端来设置环境变量。
这些环境变量将确定交叉编译过程中使用的工具链和库的路径。
确保将交叉编译工具链的路径添加到PATH环境变量中,以便在运行编译命令时可以找到它们。
接下来,需要根据目标平台的需求来配置OnlyOffice的编译过程。
这包括选择所需的功能和库,并设置编译选项。
因为OnlyOffice是一个大型的应用程序,有许多模块和依赖项,所以在进行交叉编译之前,需要先安装这些依赖项和库。
这可能涉及到下载和编译各个依赖项的源代码,以及将它们安装到目标平台上。
确保根据目标平台的要求来选择正确的编译选项,并启用适当的功能。
一旦所有的准备工作都完成了,就可以开始进行OnlyOffice的交叉编译了。
使⽤cmake进⾏交叉编译cmake 因为“⼜”要额外学⼀门语⾔⽽被诟病,但这并不妨碍越来越多私⼈项⽬⽤ cmake 来管理;autoconfig 确实是更好的发⾏⼯具,但⽤cmake 管理项⽬显然更加的容易。
如果要应⽤这些 cmake 管理的项⽬到嵌⼊式环境中,必然涉及交叉编译的问题。
这些项⽬交叉编译,主要是设置⼀些环境变量。
这些设定可以写成⼀个 .cmake ⽂件,1) 需要交叉编译时 include ,2)或者直接把这些配置写到 CMakeLists.txt ⽂件的开始位置。
两种⽅法是等效的。
⽤下⾯语句应⽤写好的配置。
include (cross.cmake)下⾯是收集的⼏个针对 arm 平台的交叉编译配置,参考这两个配置,根据⾃⼰平台的不同,进⾏定制修改即可。
(感觉直接制定编译器即可?待验证)配置1SET(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)配置3SET(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++)。
Cygwin下用crosstool-ng 编译交叉工具链Cywin版本:1.7.7(CYGWIN_NT-5.1)Crosstool-ng版本:1.9.3操作系统:Windows XP SP3一、下载crosstool-ngcrosstool-ng的下载地址是:/download/crosstool-ng/值得注意的是,下载里最新的crosstool-ng以后,记得到/download/crosstool-ng/01-fixes/看看有没有相应的补丁,有得话一起下载下来。
本次下载的版本是 1.9.3 无patch。
二、准备crosstool-ng的安装环境使用crosstool-ng必须安装一些开发应用工具:grep,sed,bash,make,gcc,awk,bison,flex,makeinfo,automake,libtool,curl,cvs,patch,gzip,bzip2,liblz ma1,ncurses(对应的库也要装上)三、安装crosstool-ng$ mkdir ~/croosstool-ng# 在当前用户目录下建立croosstool-ng目录$ cd ~/croosstool-ng$ mv /tmp/crosstool-ng-1.9.3.tar.bz2 ./ #把下载的crosstool-ng软件包放到crosstool-ng目录中$ tar -jxvf crosstool-ng-1.9.3.tar.bz2 # 解包$ cd crosstool-ng-1.9.3 # 进入解压目录$ patch -p1 < <补丁文件> # 给crosstool-ng打补丁(如果有)$ ./configure --prefix=/opt/crosstool-ng # 配置crosstool-ng$ make # 编译crosstool-ng$ make install # 安装crosstool-ng$ echo "PA TH=$PATH:/opt/crosstool-ng/bin" >> ~/.bashrc # 为后面调用ct-ng命令增加环境变量$ source ~/.bashrc$ ct-ng helpThis is crosstool-NG version 1.9.3Copyright (C) 2008 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>This is free software; see the source for copying conditions.There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.到此,我们已经成功迈出一大步,好戏还在后头,加油~!四、配置交叉编译工具链$ cd ~/croosstool-ng$ mkdir crosstool-ng-1.9.3_build # 建立一个交叉工具链的输出目录$ mkdir src # 建立保存源码包目录$ mkdir x-tools # 建立交叉编译器的安装路径$ cd crosstool-ng-1.9.3_build/$ cp /opt/crosstool-ng/lib/ct-ng-1.9.3/samples/arm-unknown-linux-gnueabi/crosstool.config .config $ ct-ng menuconfig此时会出现crosstool-ng的配置窗口,针对armv4t体系架构,开始对其进行修改配置:1、已下载好的源码包路径和交叉编译器的安装路径。
cmake指令详解所需⽂件名:CmakeLists.txt,在需要操作的每个⽬录下都需要PROJECT(⼯程名字)这条指令会⾃动创建两个变量:<projectname>_BINARY_DIR(⼆进制⽂件保存路径) <projectname>_SOURCE_DIR(源代码路径)cmake系统也帮助我们预定义了PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR其值与上述对应相等SET(变量名变量值)SET(VAR [VALUE] [CACHE TYPEDOCSTRING [FORCE]])SET(SRC_LIST main.c t1.ct2.c)SET(SRC_LIST main.c)MESSAGEMESSAGE([SEND_ERROR | STATUS | FATAL_ERROR] “message to display” …)向终端输出⽤户定义的信息或变量的值SEND_ERROR, 产⽣错误,⽣成过程被跳过STATUS, 输出前缀为—的信息FATAL_ERROR, ⽴即终⽌所有cmake过程ADD_EXECUTABLEADD_EXECUTABLE(可执⾏⽂件名⽣成该可执⾏⽂件的源⽂件)说明源⽂件需要编译出的可执⾏⽂件名例:ADD_EXECUTABLE(hello ${SRC_LIST})说明SRC_LIST变量中的源⽂件需要编译出名为hello的可执⾏⽂件ADD_SUBDIRECTORYADD_SUBDIRECTORY(src_dir [binary_dir] [EXCLUDE_FROM_ALL])向当前⼯程添加存放源⽂件的⼦⽬录,并可以指定中间⼆进制和⽬标⼆进制的存放位置EXCLUDE_FROM_ALL含义:将这个⽬录从编译过程中排除SET(EXECUTABLE_OUTPUT_PATH${PROJECT_BINARY_DIR}/bin)更改⽣成的可执⾏⽂件路径SET(LIBRARY_OUTPUT_PATH${PROJECT_BINARY_DIR}/lib)更改⽣成的库⽂件路径ADD_LIBRARYADD_LIBRARY(libname [SHARED|STATIC|MODULE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN)⽣成动态静态库例:ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC})SET_TARGET_PROPERTIES设置⽬标的⼀些属性来改变它们构建的⽅式。
CMake命令,作者翻译的很详细,以下是⾃⼰进⾏的摘录:CMake80个命令(详细解释可以看)CMD#1: add_custom_command为⽣成的构建系统添加⼀条⾃定义的构建规则。
add_custom_command命令有两种主要的功能;第⼀种是为了⽣成输出⽂件,添加⼀条⾃定义命令;第⼆种是为⼀个⽬标——⽐如⼀个库⽂件或者可执⾏⽂件——添加⼀条⾃定义命令。
add_custom_command(OUTPUT output1 [output2 ...]COMMAND command1 [ARGS] [args1...][COMMAND command2 [ARGS] [args2...] ...][MAIN_DEPENDENCY depend][DEPENDS [depends...]][IMPLICIT_DEPENDS <lang1> depend1 ...][WORKING_DIRECTORY dir][COMMENT comment] [VERBATIM] [APPEND])add_custom_command(TARGET targetPRE_BUILD | PRE_LINK | POST_BUILDCOMMAND command1 [ARGS] [args1...][COMMAND command2 [ARGS] [args2...] ...][WORKING_DIRECTORY dir][COMMENT comment] [VERBATIM])CMD#2: add_custom_target添加⼀个⽬标,它没有输出;这样它就总是会被构建。
add_custom_target(Name [ALL] [command1 [args1...]][COMMAND command2 [args2...] ...][DEPENDS depend depend depend ... ][WORKING_DIRECTORY dir][COMMENT comment] [VERBATIM][SOURCES src1 [src2...]])CMD#3:add_definitions 为源⽂件的编译添加由-D引⼊的define flag。
[转]Cygwin教程windows和linux各有其优越性,可以安装在同⼀台电脑上,但切换要重启。
同时拥有两台电脑,⼀台装win,⼀台装linux,⾃然⾮常好,但具备此条件的不多。
本⽂介绍cygwin,它可以让你在win下拥有linux开发环境,并且不⽤切换。
简单的讲述⼀下cygwin的安装和配置,⼊门级教程,还请各位⼀⼆。
点击运⾏,Next->选Install from Internet,Next->填写Root Directory,如X:\cygwin,Next->填写Local Package Directory,如X:\cygwin\ftp,Next->选Direct Connection,Next->选⼀个较快的ftp,Next->到了关键步骤,如果仅想安装基本系统,直接Next;如果想完整安装,则点击All旁边的旋转状图标,将Default切换⾄Install;如果和我⼀样,仅想在命令⾏下写写程序,则只要将 gcc、make等开发⼯具选上,还有openssh等;选好后,Next->开始下载,Take a coffee break。
回来后,Next->选择需不需要创建快捷⽅式。
->END点击快捷⽅式或X:\cygwin\cygwin.bat打开控制台,如果是域⽤户,按照提⽰makepasswd和makegroup即可。
下⾯说⼀些简单的调整和配置。
⼀、ssh的安装cygwin⾃带的控制台可调参数很少,舒适度较低。
有没有办法⽤熟悉的putty或secureCRT来操控cygwin呢?办法有⼆:1、⽤puttycyg。
cygwin bash shell能做的,puttycyg基本上都能实现,本地操作的话,极⼒推荐这款好软件。
2、安装sshd,然后本机登陆。
如果安装时已选择openssh,按照下⾯的操作继续。
如果忘了安装,点击setup.exe,选上openssh,再装⼀次即可。
cygwin cmake 交叉编译
1. 交叉编译:在一种操作系统上编译运行在另一种操作系统上的程序。
2. Cygwin:一种在Windows平台下提供类Unix运行时环境的工具集。
3. CMake:一个跨平台的开源构建系统。
在进行cygwin cmake交叉编译的过程中,需要使用cygwin的交叉编译工具链,以及配置相应的CMake文件。
下面是具体的步骤:
1. 安装cygwin:可以在cygwin官网下载安装程序进行安装。
2. 安装交叉编译工具链:需要安装gcc、g++等交叉编译工具链。
3. 配置环境变量:需要将交叉编译工具链所在的路径添加到系统的环境变量中。
4. 配置CMake文件:需要修改CMakeLists.txt文件,添加如下内容:
```
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_C_COMPILER
/cygdrive/d/tools/gcc-linaro-5.3-2016.02-i686_arm-linux-gnueabihf/bin/arm-linu x-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER
/cygdrive/d/tools/gcc-linaro-5.3-2016.02-i686_arm-linux-gnueabihf/bin/arm-linu x-gnueabihf-g++)
set(CMAKE_FIND_ROOT_PATH
/cygdrive/d/tools/gcc-linaro-5.3-2016.02-i686_arm-linux-gnueabihf)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
```
其中,需要修改CMAKE_C_COMPILER和CMAKE_CXX_COMPILER的路径为交叉编译工具链的路径。
5. 执行cmake:在cygwin的终端中执行cmake命令,以生成Makefile文件。
例如:
```
cd /path/to/project
mkdir build
cd build
cmake ..
```
```
make -j4
```
1. 确保交叉编译工具链版本与目标系统版本匹配。
2. 确保CMakeLists.txt文件中的内容正确无误。
3. 在使用make命令时,可以使用“-j”选项指定并行编译的线程数,加快编译速度。
4. 在进行交叉编译时,需要考虑目标系统的底层库支持情况,以避免在目标系统上运行时出现错误。
总结:通过上述步骤,可以方便地在cygwin环境下进行交叉编译。
这是一种十分实用的技术,在嵌入式系统开发等领域中得到广泛应用。