msys2交叉编译工具
‘壹’ 求MSYS2(Windows开发环境搭建) V2019.5.2 免费版网盘资源
链接:
提取码:pd7h
软件名称:MSYS2(Windows开发环境搭建)V2019.5.2免费版
语言:简体中文
大小:70.12MB
类别:系统工具
介绍:MSYS2是一款软件开发环境平台,作为MSYS的独立重写版本,提供了一个类似于Unix的环境、命令行界面和软件存储库。该软件支持中文,用户需要中文的话可以直接输入中文和浏览中文目录,让用户的安装、使用、构建和移植软件变得更加容易。
‘贰’ MSYS2的安装说明
1、下载并运行安装包:
32位Windows下载msys2-i686安装包,64位Windows下载msys2-x86_64安装包;
2、点击“Next(下一步)”
3、输入安装目录(目录名称必须为ASCII字符短路径,既不能使用重音符号“ ’ ”,也不能使用空格或连接符号“-”)
4、勾选“RunMSYS2now(现在运行MSYS2)”
5、通过以下命令来更新MSYS2系统文件包: pacman--needed-Sybashpacmanpacman-mirrorsmsys2-runtime6、关闭MSYS2,从开始菜单重新启动MSYS2并更新其他软件包 pacman-Su
7、MSYS2安装完成,你就可以使用MSYS2中的pacman包管理工具安装你喜爱的Vim、Git、GCC等工具软件了。

‘叁’ MSYS2的特点
安装方便 自带 pacman 管理,可以使用 pkgtool 来 makepkg 较快的源速度(可以修改源地址) 自带软件和库较全而且比较新 使用mingw-w64工具链,可以编译32位或64位代码(需要自行安装) 中文支持好,可以直接输入和浏览中文目录

‘肆’ Ubuntu下使用mingw-w64交叉编译ffmpeg
网上大部分编译windows版ffmpeg的教程都是基于msys+mingw的,完全运行在windows上。由于msys2的性能实在是太糟糕了,编译速度太感人,因此决定研究linux下使用mingw-w64交叉编译
先是安装ubuntu版的mingw-w64
sudo apt install mingw-w64
然后在configure ffmpeg的时候,在正常的配置项之后加上。
--arch=x86 --target-os=mingw32 --cross-prefix=i686-w64-mingw32-
上面是32位库编译的配置,64位的如下
--arch=x86_64 --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32-
而且最好使用动态库,静态库还需要链接一大堆mingw的库实现,而且还可能链接失败。但这样编译出来的动态库,还需要依赖 libgcc_s_sjlj-1.dll。如果要移除这个依赖,configure的时候还要加上 --extra-ldflags='-static-libgcc'
‘伍’ MSYS2的MSYS2是什么
MSYS2 是MSYS的一个升级版,准确的说是集成了pacman和Mingw-w64的Cygwin升级版, 提供了bash shell等linux环境、版本控制软件(git/hg)和MinGW-w64 工具链。与MSYS最大的区别是移植了 Arch Linux的软件包管理系统 Pacman(其实是与Cygwin的区别)。

‘陆’ Windows搭建MSYS2和MINGW64环境
为了在windows下编译GDAL和Cesium Terrain Builder等软件,需要搭建MSYS2和MINGW64的编译环境
Windows Server 2012 R2
MSYS2 64位
双击安装MSYS2之后,由于MSYS2默认资源站点速度较慢,可以配置国内 清华大学开源镜像站
安装完成后,编辑 /etc/pacman.d/mirrorlist.mingw32 ,在文件开头添加:
编辑 /etc/pacman.d/mirrorlist.mingw64 ,在文件开头添加:
编辑 /etc/pacman.d/mirrorlist.msys ,在文件开头添加:
然后执行 pacman -Sy 刷新软件包数据即可。
配置国内镜像站点后,在shell里面执行 pacman -Syuu 更新全部依赖
MSYS2内置了pacman包管理工具,运行
pacman -S gcc make
即可安装gcc,make等工具
msys2安装完成后,开始菜单会有三个启动方式:
三种启动方式区别主要在于编译环境软件包的不同,如gcc,clang等版本不同。通用的工具如:grep,git,vim,emacs等等在三种方式内都是一样的。
默认情况下, msys64/home 会作为系统默认home目录,如果需要修改home目录,可在环境变量-》用户变量中建立 Home 变量,指向自定义位置,然后修改 msys64/etc/nsswitch.conf ,设置 db_home: /%Home%
‘柒’ 如何使用clang+llvm+binutils+newlib+gdb搭建交叉编译环境
测试环境:Windows8.1 + MSYS2 with Mingw, Clang, LLVM + GNU Tools for ARM Embedded Processor
首先用用Clang生成LLVM字节码
clang -emit-llvm --target=arm-none-eabi -mcpu=cortex-m3 -mthumb -mfloat-abi=soft
注意,需要手动添加GNU Tools for ARM Embedd的头文件
然后用llc生成汇编代码
接着,使用GNU Tools for ARM Embedded Processor的汇编器生成可执行文件
arm-none-eabi-as -mcpu=cortex-m3 -mthumb -mfloat-abi=soft
二进制文件用GNU Tools for ARM Embedded Processor里的arm-none-eabi-obj生成
一些需要注意的地方是Clang的默认配置可能和目标架构的汇编器不一致。比如arm-none-eabi-as会默认开启short-enums,当直接使用arm-none-eabi-gcc时这不是问题,因为编译器也默认开启了这个选项,但Clang不会,所以需要手动加上-fshort-enums。
