2019-05-25 16:31:26 damuluori 阅读数 34

Compile gcc4.9.4 + Latest-Mingw-w64 under Linux, build Cross-compile-toolchain , to generate software which can run on windows xp and xp+ x32/x64.

We generate all static compile.

Reference:https://pete.akeo.ie/2010/07/compiling-mingw-w64-with-multilib-on.html

Reference: /run/media/lixing/6T_20181101_3/mingw32_20190521_src/mingw-w64-mingw-w64_master/mingw-w64-doc/howto-build/mingw-w64-howto-build.txt

finally directory layout:

/works/tools/compiler/mingw32/
bin
x86_64-w64-mingw32-c++, x86_64-w64-mingw32-gcc,…
lib
gcc
libexec
gcc
share
x86_64-w64-mingw32
bin
include
lib
lib32
mingw(ln -s x86_64-w64-mingw32 mingw ,it’s x86_64-w64-mingw32’s soft-link)

1.At first, build Binutils-2.29

cd /run/media/lixing/6T_20181101_3/mingw32_20190521_src/binutils-2.29
mkdir build
cd build
…/configure --prefix=/works/tools/compiler/mingw32 --with-sysroot=/works/tools/compiler/mingw32 --enable-gold --enable-ld --enable-lto --target=x86_64-w64-mingw32 --enable-targets=x86_64-w64-mingw32,i686-w64-mingw32
make
make install

2.Compile mingw-w64-headers of mingw-w64-mingw-w64_master

cd /run/media/lixing/6T_20181101_3/mingw32_20190521_src/mingw-w64-mingw-w64_master/mingw-w64-headers
mkdir build
cd build
…/configure --host=x86_64-w64-mingw32 --prefix=/works/tools/compiler/mingw32/x86_64-w64-mingw32
make
make install

3.Create soft-link

cd /works/tools/compiler/mingw32
ln -s x86_64-w64-mingw32 mingw

4.Compile gcc4.9.4, Gcc, pass 1gmp-6.1.0.tar.gz

mpc-1.0.2.tar.gz
mpfr-3.1.4.tar.gz
unzip them to path gcc4.9.4 ,corresponding to decompressed folder name is:gmp,mpc,mpfr,so that gcc will found them when gcc compiling.
cd /run/media/lixing/6T_20181101_3/mingw32_20190521_src/gcc4.9.4

we need build gcc outside src directory.
cd …
mkdir gcc_build
cd gcc_build

Reference: /run/media/lixing/6T_20181101_3/mingw32_20190521_src/gcc4.9.4/INSTALL/configure.html

…/gcc4.9.4/configure --with-sysroot=/works/tools/compiler/mingw32 --prefix=/works/tools/compiler/mingw32 --enable-languages=c,c++ --enable-multiarch --enable-multilib --with-multilib-list=m32,m64 --disable-nls --target=x86_64-w64-mingw32 --with-system-zlib --enable-version-specific-runtime-libs --enable-fully-dynamic-string --enable-libgomp --with-host-libstdcxx="-lstdc++ -lsupc++" --enable-threads=win32 --with-gnu-ld --with-gnu-as --enable-lto --enable-shared --with-dwarf --enable-64bit --enable-libssp

make all-gcc -j4
make install-gcc

5. mingw-w64-crt

cd /run/media/lixing/6T_20181101_3/mingw32_20190521_src/mingw-w64-mingw-w64_master
export PATH=/works/tools/compiler/mingw32/bin:$PATH
mkdir build
cd build

mypath=/works/tools/compiler/mingw32/x86_64-w64-mingw32

…/configure --with-sysroot=mypathprefix=mypath --prefix=mypath --host=x86_64-w64-mingw32 --enable-multilib --enable-lib32 --enable-lib64 --enable-experimental --enable-targets=x86_64-w64-mingw32,i686-w64-mingw32

make -j4
make install

6. Build libgcc

cd /run/media/lixing/6T_20181101_3/mingw32_20190521_src/gcc_build
“make all-target-libgcc”, then “make install-target-libgcc”.

7. pthreads

https://sourceware.org/pthreads-win32/
export PATH=/works/tools/compiler/mingw32/bin:$PATH

MINGW32_PATH=/works/tools/compiler/mingw32
make clean GC-static CROSS=x86_64-w64-mingw32- CFLAGS=’-I. -I(MINGW32PATH)/x8664w64mingw32/includesysroot=(MINGW32_PATH)/x86_64-w64-mingw32/include --sysroot=(MINGW32_PATH)/x86_64-w64-mingw32’ -f GNUmakefile PTW32_FLAGS="-DPTW32_STATIC_LIB"
After sucess,Install it:
cp -f pthread.h $(MINGW32_PATH)/x86_64-w64-mingw32/include
cp -f sched.h $(MINGW32_PATH)/x86_64-w64-mingw32/include
cp -f semaphore.h $(MINGW32_PATH)/x86_64-w64-mingw32/include
cp -f config.h $(MINGW32_PATH)/x86_64-w64-mingw32/include/pthread_config.h
cp -f libpthread.a $(MINGW32_PATH)/x86_64-w64-mingw32/lib
GNUmakefile中,ARTI=’-m32’ stand for build x32,so you’ll must build it again for x32,then:
cp -f libthread.a $(MINGW32_PATH)/x86_64-w64-mingw32/lib32

modify $(MINGW32_PATH)/x86_64-w64-mingw32/include/pthread.h:
#if defined(HAVE_PTW32_CONFIG_H)
#include “config.h”
#endif /* HAVE_PTW32_CONFIG_H /
change to:
//#if defined(HAVE_PTW32_CONFIG_H)
#include “pthread_config.h”
//#endif /
HAVE_PTW32_CONFIG_H */

Download:http://oltag.com:8080/yaolixing/18/06/26/01/GNUmakefile.txt

above link may be invalid, so I introduce it:
/run/media/lixing/6T_20181101_3/mingw32_20190521_src/pthreads/GNUmakefile:
DEVROOT = /works/tools/compiler/mingw32/x86_64-w64-mingw32

DLLDEST = $(DEVROOT)/dll
LIBDEST = $(DEVROOT)/lib
ARTI=-m32

CC = $(CROSS)gcc $(ARTI)
CXX = $(CROSS)g++ $(ARTI)

ifeq (’$(ARTI)’,’-m32’)
ARFLAGS = --target=pe-i386
DLLTOOL = $(CROSS)dlltool -m i386
RC = $(CROSS)windres -F pe-i386
else
ARFLAGS = --target=pe-x86-64
DLLTOOL = $(CROSS)dlltool
RC = $(CROSS)windres
endif

AR = $(CROSS)ar $(ARFLAGS)
RANLIB = $(CROSS)ranlib $(ARFLAGS)

OPT = $(CLEANUP) -O3 # -finline-functions -findirect-inlining
XOPT =
RCFLAGS = --include-dir=. -I/works/tools/compiler/mingw32/include

CFLAGS = $(OPT) $(XOPT) -I. -I/works/tools/compiler/mingw32/include --sysroot=/works/tools/compiler/mingw32 -DHAVE_PTW32_CONFIG_H -Wall

8. Build libgcc last!

cd /run/media/lixing/6T_20181101_3/mingw32_20190521_src/gcc_build
make -j4 && make install

Now, you can generate x32 exe for windows:
/works/tools/compiler/mingw32/bin/x86_64-w64-mingw32-gcc -m32 helloworld.cxx -o main.exe

2016-05-20 15:17:26 x_studying 阅读数 5710

下载mingw需要的文件:64位


包括




具体可以参见mingw官方网站:http://mingw-w64.org/doku.php

注意下载mingw的依赖软件包


解压全部文件到一个文件夹,例如:/mydata

xz文件解压方法

xz -d mingw-w64-headers-4.0.6-1-any.pkg.tar.xz

tar文件解压方法

tar -xvf mingw-w64-headers-4.0.6-1-any.pkg.tar


导出库目录到环境变量:

将解压的目录拷贝到/usr目录下
cp -r -f /mydata /
导出库目录到环境变量
export LD_LIBRARY_PATH=/usr/lib:/usr/lib64

配置并编译,例如编译64位mono

./configure --prefix=/mydata/local --host=x86_64-w64-mingw --disable-mcs-build

make

make install

2020-03-22 18:26:00 wo198711203217 阅读数 32

技术支持

[点我获取技术支持]

1. 什么是 MinGW-w64

MinGW 的全称是:Minimalist GNU on Windows 。它实际上是将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 Windows 中运行的可执行程序。而且还可以使用一些 Windows 不具备的,Linux平台下的开发工具。一句话来概括:MinGW 就是 GCC 的 Windows 版本 。

以上是 MinGW 的介绍,MinGW-w64 与 MinGW 的区别在于 MinGW 只能编译生成32位可执行程序,而 MinGW-w64 则可以编译生成 64位 或 32位 可执行程序。

正因为如此,MinGW 现已被 MinGW-w64 所取代,且 MinGW 也早已停止了更新,内置的 GCC 停滞在了 4.8.1 版本,而 MinGW-w64 内置的 GCC 则更新到了 6.2.0 版本。

2. 为什么使用 MinGW-w64

1、MinGW-w64 是开源软件,可以免费使用。
2、MinGW-w64 由一个活跃的开源社区在持续维护,因此不会过时。
3、MinGW-w64 支持最新的 C语言 标准。
4、MinGW-w64 使用 Windows 的C语言运行库,因此编译出的程序不需要第三方 DLL ,可以直接在 Windows 下运行。
5、那些著名的开源 IDE 实际只是将 MinGW-w64 封装了起来,使它拥有友好的图形化界面,简化了操作,但内部核心仍然是 MinGW-w64。

MinGW-w64 是稳定可靠的、持续更新的 C/C++ 编译器,使用它可以免去很多麻烦,不用担心跟不上时代,也不用担心编译器本身有bug,可以放心的去编写程序。

3. MinGW-w64 适合做什么

对于熟悉 MinGW-w64 的高手而言,它可以编译任何 C语言 程序。但对于一般人来说,MinGW-w64 太过简陋,连图形用户界面都没有。这让习惯使用鼠标的人,感到很痛苦。虽然也可以通过一些配置,让 MinGW-w64 拥有图形用户界面,但那个过程非常麻烦。

除此之外,编译复杂的程序时,还需要你会编写 Makefile ,否则只能一个文件一个文件的编译,可想而知会多么辛苦。

但对于初学 C语言 的人来说,MinGW-w64 是正合适的编译器,至少黑色的命令提示符界面很有编程的气氛,感觉很酷。

在刚开始学 C语言 时,所有代码通常都写在一个文件中,只要输入几个简单的命令,就能用 MinGW-w64 编译成可执行文件。虽然 VS2015 等编译器,只要点击下鼠标就可以完成编译,但它会自动生成一大堆工程文件,让初学者摸不着头脑。而 MinGW-w64 则只会生成一个可执行文件。

如果对 MinGW-w64 和 VS2015 等编译器进行一下形容,那么 MinGW-w64 是手动的,而 VS2015 等编译器则是自动的。因此 MinGW-w64 的编译过程更加直观容易理解,也比较适合C语言学习。

总而言之,对于一般人来说,MinGW-w64 适合学习 C语言 时使用,真正工作还是用 VS2015 更好。当然如果您是在 Linux 下工作,那么Code::Blocks可能是一个选择,不过最大的可能是您必须习惯使用 GCC 来编译程序。

4. 安装 MinGW-w64

Mingw-w64官网地址:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/

进入官网后的截图:
在这里插入图片描述

4.1. 在线安装

在这里插入图片描述
在线安装的,需要下载上图的在线安装器,这个安装器需要连接国外网址 ,不推荐这种安装方式。所以,这里不多介绍了。

4.2. 离线安装

(一) 版本选择
在这里插入图片描述
我这里以最新的8.1.0版本进行安装说明。
(二) 同一版本安装包的选择
在这里插入图片描述
由于我的系统是64位的,所以这里我选择了x86_64-posix-sjlj这里离线包。
(三) 离线包下载好,解压到某个盘的根目录下
我这里解压到C:
在这里插入图片描述
(四) 配置环境变量
我的电脑右键->属性->高级系统设置->环境变量,将C:\mingw64\bin添加到PATH环境变量里。

配置好后,打开cmd,执行where gcc确认gcc命令来自你的解压目录。
在这里插入图片描述
执行gcc -v命令查看gcc的版本信息:
在这里插入图片描述

2020-02-20 09:05:00 weixin_44307065 阅读数 64

博客简介

本篇博客是工具类博客,介绍如何在windows10下安装MinGW-w64。
MinGW,是Minimalist GNUfor Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时(C Runtime)库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95发行版以上的 Windows OS 有效,使用基本运行时,你可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行时(C Runtime)扩展,与基本运行时相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 WindowsAPI功能。
安装步骤如下:

  • 下载MinGW-w64
  • 解压到安装文件夹
  • 配置环境变量
  • 检测安装是否成功

下载MinGW-w64

下载MinGW-w64,这里有2个途径

解压到安装文件夹

选择一个文件夹,解压到这个文件夹,并且进入bin目录,复制bin目录路径,如:E:\MinGWw64\mingw64
在这里插入图片描述

配置环境

配置环境步骤:

  • 右键我的电脑,打开属性
  • 点击高级系统设置
  • 点击环境变量
  • 选择path,点击编辑
  • 进入后点击新建,将bin路径粘贴上去
  • 点击确定
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

检测安装是否成功

  • Win+R
  • 输入cmd
  • 输入gcc -v
  • 如果cmd面板输出如下,则安装成功
    在这里插入图片描述
2020-02-02 15:53:43 Mculover666 阅读数 922

1. Mingw及Mingw-W64简介

MinGW项目官方网站)是Minimalist GNU for Windows的缩写,是本地Windows应用程序的极简主义开发环境,该项目旨在将gcc编译器移植到Windows系统上,关于gcc编译器,请参考我的另一系列博客:

MinGW主要包括:

  • GNU Compiler Collection(GCC):包括C,C ++,ADA和Fortran编译器;
  • 适用于Windows的GNU Binutils:汇编程序,链接程序,归档管理器;
  • 一个带有可选GUI的命令行安装程序(mingw-get):用于MS-Windows上的MinGW和MSYS部署;
  • 一个GUI首次设置工具(mingw-get-setup):可以方便的使mingw-get启动并运行;

Mingw-W64项目(官方网站)由Mingw项目发展而来,为了更好的对64位系统和新的API提供支持,它在2007年对mingw项目进行了分支,得到了广泛的使用和发展,比较主流的一些使用Mingw-w64的项目如下:

除了MinGW,还有一个项目叫Cygwin官方网站),两个项目的区别如下:

  • MinGW旨在将Gcc套件移植到Windows上,即:对于MinGW提供的gcc,其使用方法和Linux中的Gcc并无差异,但是其编译出的可执行程序是Windows平台的;
  • Cygwin旨在提供一个类似于Windows上的Linux虚拟机,使得Linux中的Gcc可以在Windows平台上使用,即:Cygwin提供了一种在Windows平台上运行Linux应用程序的方法;

鉴于当前大多数电脑都是64位机器和windows7/10操作系统,在本文中我们选择使用MinGW-W64。

2. 下载MinGW-W64

首先需要说明:

MinGW-W64的安装包有离线安装和在线安装两种方式:

  • 在线安装:只需下载一个1M不到的安装程序,由自动安装程序连接服务器进行下载,如果访问外网速度较快,建议选择;
  • 离线安装:下载整个安装包,下载后只需解压即可使用,优点是可以使用第三方下载工具下载整个文件,如果访问外网速度较慢,建议选择;
  • 如果不能正常访问外网,这里我上传了离线安装包到百度网盘,有需自提;
  1. 进入MinGW-W64官方网站:http://mingw-w64.org,点击Downloads进入下载页面:
  2. 该页面下的Pre-built toolchains and packages是包含了Mingw-w64及特定工具的整合包,这里我们只需要下载Mingw-w64,所以点击下面的SourceForge,进入Mingw-w64代码的托管网站:
  3. 进入Source Forge后,点击File一栏,然后点击自己需要的版本进行下载:
  • 在线安装包:mingw-w64-install.exe

  • 离线安装包:

    其中的选择参数说明如下表:

参数分类 参数 说明
CPU架构 x86_64 64位
CPU架构 i686 32位
操作系统接口协议 win32 开发windows应用程序
操作系统接口协议 posix 开发Linux、Mac应用程序
异常处理模型(32bit CPU) dwarf 版本新,性能较好,不支持64位
异常处理模型(32bit CPU) sjlj 版本低,同时支持32位和64位
异常处理模型(64bit CPU) seh 版本新,性能较好,不支持32位
异常处理模型(64bit CPU) sjlj 版本低,但支持32位和64位

综上所述,我选择下载的gcc版本为8.1.0,其他参数为x86_64-win32-seh

3. 安装MinGW-W64

3.1. 在线安装MinGW-W64

  1. 双击运行下载的在线安装程序:
  2. 点击Next,安装程序自动连接服务器以便获取需要的文件:
  3. 要安装的MinGW-W64版本选择:
  4. 选择MinGW-w64的安装目录(安装路径不要有中文和空格):
  5. 等待安装完成即可。

3.2. 离线安装MinGW-W64

  1. 解压下载的离线安装包:
  2. 将其中的mingw64文件夹复制到安装的目录下(这里我直接复制到C盘);
  3. 安装完成。

4. 配置环境变量

MinGW-W64安装完成后,其工具都在bin目录下,如图:

为了在命令行使用这些工具,需要将该目录配置到path环境变量中:

  1. 右击计算机,选择属性->高级系统设置->环境变量,选中系统变量中的Path环境变量,点击编辑:
  2. 在最后添加目录:
  3. 逐个点击确定,返回。
  4. 重启电脑,使环境变量生效。
  5. 测试是否安装并且配置成功:

5. 解决不能使用make命令的问题

在MinGW-W64中,因为make是一个自动化编译构建工具,并无32位64位之分,所以MinGW-W64直接沿用了32位版本中的make工具,为了表明这个原因,make工具的名称变为mingw32-make.exe,所以我们在命令行使用的时候不能直接使用make命令,而需要输入完整的名称,很不方便,如图:

如何解决这一问题呢?

其实只需要将mingw32-make.exe文件复制出来一个副本,然后将副本更名为make即可

在命令行中测试是否可以正常使用make:

6. 使用示例 —— 编译运行HelloWorld

在Windows下使用gcc和make等工具和在Linux下使用方法相同,具体请查看我在文章开篇推荐的博文,此处不作赘述,用一个示例程序演示下使用即可:

  1. 编写源代码
/* file hello.c */
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	/* 打印Hello World */
	printf("Hello World.\n");

	/* 程序暂停,便于观察结果 */
	system("pause");
	
	/* 程序返回,结束 */
	return 0;
}
  1. 编写makefile
hello.exe:hello.c
	gcc hello.c -o hello.exe
  1. 编译
make

  1. 运行:在命令行输入hello.exe运行或者直接双击hello.exe可执行程序:



没有更多推荐了,返回首页