`

gomingw构建记录(仅runtime)

阅读更多

 

注意,不完整编译,仅8g、8l和runtime.a

 

1. gomingw

Go MinGW Builds

Win32 (experimental) build of release 2011-03-07.1

http://code.google.com/p/gomingw/

 

2. MSYS | MinGW

MinGW - Minimalist GNU for Windows

* gcc version 3.4.5 (mingw-vista special r3)

* GNU Make 3.81

http://sourceforge.net/projects/mingw/

或者用这个(未测试)

https://bitbucket.org/jpoirier/go_mingw/downloads

 

3. 编译的额外工具

a. 需要以下工具和库(注意,依赖于mingw的运行时dll,故需要msys/mingw才可运行)

* Ed - A line-oriented text editor

(ed.exe,依赖于Regex)

http://gnuwin32.sourceforge.net/packages/ed.htm

http://www.gnu.org/software/ed/ed.html

* LibIntl for Windows

(libintl3.dll)

http://gnuwin32.sourceforge.net/packages/libintl.htm

* Regex for Windows

(regex2.dll)

http://gnuwin32.sourceforge.net/packages/regex.htm

* Bison for Windows

(bison.exe,依赖于Regex和Libintl)

http://gnuwin32.sourceforge.net/packages/bison.htm

* The AWK Programming Language

(awk.exe)

http://cm.bell-labs.com/cm/cs/awkbook/index.html

--------------------

b. 二进制可以在下面的链接中找到,不需要自己编译:

* ed.exe和regex2.dll在gowin-env中。

https://bitbucket.org/akavel/gowin-env/downloads

或者在GnuWin32中安装。

http://gnuwin32.sourceforge.net/packages.html

--------------------

c. 注意事项:

* 必须复制bison的二进制安装包里的share目录(一些.m4文件)

* 把msys/mingw自带的awk去掉或重命名,使用awk.exe代替原有的awk文件

--------------------

d. 用到的工具合计有(不包括一些依赖库的dll)

gcc version 3.4.5 (mingw-vista special r3)

GNU Make 3.81

GNU Ed 1.2

bison (GNU Bison) 2.4.1

awk version 20070501

 

4. 解压gomingw源码包

把gomingw的下载包解压到/home/Administrator目录下

目录名为/home/Administrator/go

删除/home/Administrator/go/bin下的所有.exe文件。

只保留quietgcc文件。

删除/home/Administrator/go/lib下的所有.a文件。

删除/home/Administrator/go/pkg/windows_386下的所有库文件。

 

5. 编译gomingw公共库

包括三个.a文件:

lib9.a

libbio.a

libmach.a

执行命令如下:

$ cd

$ cd go/src/lib9/

$ make

出现错误:

../Make.inc:18: *** $GOROOT is not set; use gomake or set $GOROOT in your environment.  Stop.

设置环境变量PATH和GOROOT(注意MinGW的环境变量区分大小写):

$ export GOROOT=/home/Administrator/go

$ export PATH=/home/Administrator/go/bin:$PATH

$ make

注意make可以重复使用,自动跳过之前已经完成的目标。

完成后,生成lib9.a

用类似的办法编译libbio.a和libmach.a

$ cd ../libbio

$ make

$ cd ../libmach

$ make

然后把生成的

lib9.a

libbio.a

libmach.a

复制到/home/Administrator/go/lib下

 

6. 编译gomingw编译器工具、库和runtime库

关于8g以及其它exe的作用和使用方法见这里

http://golang-china.googlecode.com/svn/trunk/Chinese/golang.org/index.html

http://code.google.com/p/golang-china/

和x86相关的重要可执行文件和库有

* gc.a

* 8g.exe

* 8l.exe(依赖于gc.a)

另外,由于runtime.a这个go库一般都会使用到,

所以还需要以下工具的帮助。

* cc.a

* 8c.exe(依赖于cc.a)

* gopack.exe

* 8a.exe

* runtime.a(依赖于cc.a,8a.exe和gopack.exe)

执行以下命令:(同样需要设置GOROOT和PATH,同上)

$ cd

$ cd go/src/cmd/gc

$ make

(如果失败,请检查awk.exe是否存在,原有awk是否重命名,

然后用make clean all重新编译)

$ cd ../8g

$ make

$ cd ../8l

$ make

$ cd ../cc

$ make

$ cd ../8c

$ make

$ cd ../gopack

$ make

$ cd ../8a

$ make

然后把编译好的8g.exe, 8l.exe, 8c.exe, 8a.exe, gopack.exe

全部复制到/home/Administrator/go/bin下,继续下面的runtime.a编译

$ cd ../../pkg/runtime/

$ make

输出文件runtime.a在_obj目录下,复制到

/home/Administrator/go/pkg/windows_386目录下

(此时目录中只有一个.a文件)

 

7. 最简单的测试

测试最简单的go程序

$ cd 

$ cd go/test

$ 8g -h

gc: usage: 8g [flags] file.go...

flags:

 -I DIR search for packages in DIR

 -d print declarations

 -e no limit on number of errors printed

 -f print stack frame structure

 -h panic on an error

 -o file specify output file

 -S print the assembly language

 -V print the compiler version

 -u disable package unsafe

 -w print the parse tree after typing

 -x print lex tokens

$ 8g helloworld.go

$ ls helloworld.*

helloworld.8  helloworld.go

$ 8l -h

usage: 8l [-options] [-E entry] [-H head] [-I interpreter] [-L dir] [-T text] [-R rnd] [-r path] [-o out] main.8

$ 8l helloworld.8

$ ls *.exe

8.out.exe

$ ./8.out.exe

hello, world

注意,这里使用8g和8l可以正确地找到库(因为前面编译的时候已经设置好),

但实际操作(脱离MinGW环境)需要重新设置环境变量指向新的路径,见

http://code.google.com/p/golang-china/wiki/Install

生成的8.out.exe是原生的Windows可执行程序,仅导入KERNEL32.DLL,

所以可以独立于MinGW和Go的环境运行。

 

8. 一些问题

* 如果make没有响应,直接结束进程然后重新运行make。

 

 

(待补充)

 
分享到:
评论

相关推荐

    onnxruntime 1.3版本

    ONNX Runtime 1.3 版本是一款高效、开源的推理引擎,专为运行ONNX(Open Neural Network Exchange)模型而设计。它支持多种硬件平台,包括GPU和CPU,旨在加速机器学习和深度学习模型的推理过程。在这个特定的1.3版本...

    onnxruntime-win-x64-1.16.2.zip

    开发者需要引用这些头文件来构建使用ONNX Runtime的项目。头文件会定义模型加载、会话创建、输入输出管理等接口。 2. **Lib** 文件夹:包含预编译的库文件(通常是.lib或.dll),这是C++应用程序链接到ONNX Runtime...

    onnxruntime-android so文件

    - `R.txt`:记录了资源ID的文本文件,通常由Android构建系统生成。 - `AndroidManifest.xml`:Android应用的核心配置文件,定义了应用的组件、权限和其他元数据。 - `jni`:Java Native Interface的缩写,这个...

    swing的三个插件(emf-sdo-runtime-2.2.0.zip,GEF-runtime-3.2.zip,VE-runtime-1.2.2_jem.zip)

    在Swing应用中,VE Runtime能够帮助开发人员快速构建图形化配置工具或设计环境。它支持多种模型类型,包括UML、BPEL等,并且与EMF和GEF紧密集成,可以实现模型之间的交互和转换。 这三个插件在Swing开发中的结合...

    onnxruntime-win-x64-1.14.1

    关于标签 "c++",ONNX Runtime 提供了 C++ API,开发者可以使用 C++ 来构建应用,集成 ONNX 模型进行预测。此外,ONNX Runtime 还支持其他编程语言,如 Python,提供多语言的便利性。 在深度学习领域,模型的推理...

    onnxruntime-1.5.2.zip

    5. **构建脚本**:用于在各种操作系统上构建和安装ONNX Runtime的脚本。 6. **测试套件**:一组测试用例,确保ONNX Runtime的功能正确性和性能。 使用ONNX Runtime的优势在于: - **跨平台**:支持Windows、Linux、...

    ruby-runtime手动插件.zip

    Ruby Runtime 插件允许你在 Jenkins 中配置和管理不同的 Ruby 版本,确保你的构建任务可以在正确的环境中执行。 首先,我们需要理解 Jenkins 是一个开源的持续集成和持续部署工具,它能够自动化软件的构建、测试和...

    09 Runtime

    这是为了确保每个Java应用仅有一个`Runtime`对象,从而避免资源冲突或不必要的开销。 ##### 代码示例: ```java /** * Every Java application has a single instance of class * <code>Runtime</code> that ...

    使用ArcGIS Runtime SDK构建iOS地图应用

    描述中提到,基于ArcGIS软件平台进行二次开发,意味着开发者可以利用ArcGIS提供的功能,通过ArcGIS Runtime SDK构建和增强自己的地图应用。二次开发通常是指在现有软件的基础上进行客户化修改或者功能增强,而不是从...

    arcgis runtime samples android master

    ArcGIS Runtime SDK for Android 是Esri公司提供的一个强大的开发工具,它允许开发者在Android平台上构建地图应用,实现地理信息系统(GIS)的功能。"arcgis runtime samples android master"是这个SDK的一个样本...

    onnxruntime-1.10.0-1.5.7-API文档-中文版.zip

    赠送jar包:onnxruntime-1.10.0-1.5.7.jar; 赠送原API文档:onnxruntime-1.10.0-1.5.7-javadoc.jar; 赠送源代码:onnxruntime-1.10.0-1.5.7-sources.jar; 赠送Maven依赖信息文件:onnxruntime-1.10.0-1.5.7.pom;...

    onnxruntime-win-x64-gpu-1.18.0.zip

    ONNX Runtime是一个高...利用这个库,开发者可以构建高性能的深度学习应用,充分利用GPU的计算能力,提高模型的推理效率。在使用过程中,务必注意CUDA和cuDNN的版本兼容性,以及正确地集成和调用ONNX Runtime的API。

    onnxruntime-win-x64-gpu-1.14.0

    4. **编译与链接**:如果需要自定义编译,需要了解ONNX Runtime的构建过程,并正确链接所需的库文件。 5. **API使用**:学习ONNX Runtime的API接口,以便在应用程序中加载、执行模型并处理输入输出数据。 通过这些...

    onnxruntime-win-x64-gpu-1.16.2.zip

    ONNX Runtime是一个高性能的推理引擎,由微软和亚马逊AWS共同开发,用于运行预先训练好的机器学习模型。...通过理解ONNX Runtime的工作原理和特性,开发者可以有效地利用此库构建高性能的应用程序。

    onnxruntime gpu

    1. **头文件**:压缩包中的头文件(通常以.h结尾)包含了C++ API的声明,开发者需要引用这些头文件来构建应用程序,以便调用ONNX Runtime的功能。例如,“onnxruntime_session.h”包含会话对象的定义,这是执行模型...

    ArcGIS Runtime中文版

    ArcGIS Runtime SDK提供了多种语言的开发接口,例如.NET WPF、Java SE和C++ QT等,使得开发者能够根据自己所熟悉的编程环境来构建GIS应用。 ArcGIS Runtime与ArcGIS Engine Runtime是两个不同的产品,它们面向的...

    Runtime Transform Gizmos.zip

    3. **工具构建**:对于需要自定义编辑工具的项目,如关卡编辑器或者角色定制,Runtime Transform Gizmos可以作为基础模块,方便地实现对象的动态调整。 4. **物理模拟**:在某些需要实时模拟物体运动的场景中,如...

    onnxruntime-1.10.0-1.5.7-API文档-中英对照版.zip

    赠送jar包:onnxruntime-1.10.0-1.5.7.jar; 赠送原API文档:onnxruntime-1.10.0-1.5.7-javadoc.jar; 赠送源代码:onnxruntime-1.10.0-1.5.7-sources.jar; 赠送Maven依赖信息文件:onnxruntime-1.10.0-1.5.7.pom;...

    onnxruntime-win-x64-1.18.0.zip

    ONNX Runtime是一个高性能的推理引擎,它由微软和亚马逊共同开发,用于运行预先训练好的机器学习模型。在本文中,我们将深入...通过正确地集成和使用这个库,你可以构建高性能的机器学习应用,充分发挥CPU的计算能力。

    树莓派安装yolov5-lite所需的onnxruntime安装包,方便

    4. **编译与安装**:根据树莓派的架构,选择正确的构建选项。对于树莓派4,可以使用以下命令: ``` mkdir build && cd build cmake -Donnxruntime_BUILD_TESTS=OFF -Donnxruntime_ENABLE_MKL_DNN=OFF -...

Global site tag (gtag.js) - Google Analytics