golang编译源代码和交叉编译方法

编译源代码

golang编译其实很简单,下载一份最新的源代码后,进入src目录运行all.bash即可,

但是你可能会遇到下面问题,这是因为现在golang都是用go语言编译的了,所以你的系统必须先安装好 >= go1.4 的版本.

./all.bash
Building Go cmd/dist using /home/ailumiyana/go1.4.
ERROR: Cannot find /home/ailumiyana/go1.4/bin/go.
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.
ailumiyana@sola:~/open_src/go/src$ export GOROOT_BOOTSTRAP=/usr/local/go1.4

编译go1.4

1、先上github上下载一份源代码https://github.com/golang/go

然后进入目录,查看全部分支。

可以看到当前最新的release分支是go1.12.

2、切换到go1.4的分支

3、进入source目录,运行脚本开始编译

 ~/open_src/go/src$ ./all.bash

4、之后可以进bin目录运行go查看版本 是不是1.4,来确认是否编译成功。

  1. sudo cp go /usr/local/go1.4 -rp 拷贝一份到本地路径

    这样我们就可以使用go1.4编译go1.12了。

编译go1.12

1、回到go源码目录我们切换到go1.12分支.

现在就直接进入src编译是不行的,我们需要先设置go1.4的路径给GOROOT_BOOTSTRAP。

./all.bash
Building Go cmd/dist using /home/ailumiyana/go1.4.
ERROR: Cannot find /home/ailumiyana/go1.4/bin/go.
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.
ailumiyana@sola:~/open_src/go/src$ export GOROOT_BOOTSTRAP=/usr/local/go1.4

export GOROOT_BOOTSTRAP=/usr/local/go1.4

2、再次进入src目录编译

你可能会遇到 _Gidle redeclared in this block 错误

这是因为我们的上次编译的中间文件没有清理的原因.

git clean -df

3、最后编译应该就没问题了,

交叉编译

go的交叉编译也比较简便,go env可以看到当前的环境变量配置,

GOOS、 GOARCH 分别表示目标机系统及处理器体系结构.

GOOS=linux GOARCH=amd64 go build hello.go

这些应该是可选搭配 :

golang编译源代码和交叉编译方法的更多相关文章

  1. golang 编译为dll 的方法

    之前一直再找如何将geojson 转为 svg 格式的数据,看到github上大多都是js来转的,只有一篇是golang来做的,想来把它封成dll 给c#.c++ 调用,网上查了很多方法,并没有写的很 ...

  2. Android 4.4 全套源代码及子模块源代码的下载方法

    博文<Android源代码下载--用git clone实现单个文件夹下载>介绍了採用git clone方法下载Android单个文件夹源代码的方法,这篇文章已经有四年的历史,这期间Goog ...

  3. 【Linux开发】为qt-embedded添加jpeg库的交叉编译方法for arm

    看了一个文章: =====================================谢论坛内各位的帮助,我的qt/e2.3.10和qtopia2.1.1终于全部编译通过. 下面是jpeg和uui ...

  4. Golang调用windows下的dll动态库中的函数 Golang 编译成 DLL 文件

    Golang调用windows下的dll动态库中的函数 package main import ( "fmt" "syscall" "time&quo ...

  5. 用VS Code搞Qt6:编译源代码与基本配置

    先说明一下,本水文老周仅讨论新版的 Qt 6,旧版的 Qt 不讨论. 尽管 Qt 有自己的开发环境,但老周必须说句不装逼的话:真的不好用.说起写代码,当然了,用记事本也能写.但是,有个高逼格的工具,写 ...

  6. 用vs2013编译lua源码方法(一)

    用vs2013编译lua源码方法 来源:网络    编辑:admin 1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下 ...

  7. [笔记]Modelsim系列01:编译Altera库的方法

    意义:一劳永逸,不用每次对那些包含Quartus II生成文件的工程进行功能仿真时,都需要重新编译一堆东西.节约时间成本. 版本:ModelSim SE 6.5d 打开Modelsim软件,默认会打开 ...

  8. 对于C++窗口编译一闪而过的解决方法 (DEV CPP下)

    对于C++窗口编译一闪而过的解决方法 首先来看一个简单的程序(编译环境为 DEV C++.):  #include <iostream>  int main()  {      std:: ...

  9. 把C编译成javascript的方法

    把C编译成javascript的方法,便于嵌入到HTML5中 https://github.com/kripken/emscripten

随机推荐

  1. Kaggle 泰坦尼克

    入门kaggle,开始机器学习应用之旅. 参看一些入门的博客,感觉pandas,sklearn需要熟练掌握,同时也学到了一些很有用的tricks,包括数据分析和机器学习的知识点.下面记录一些有趣的数据 ...

  2. ubuntu 里切换 gcc,g++ 的版本

    https://askubuntu.com/questions/26498/choose-gcc-and-g-version https://stackoverflow.com/questions/7 ...

  3. java工程操作redis

    启动redis服务 redis-server redis.windows.conf 添加驱动 <dependency> <groupId>redis.clients</g ...

  4. mybatis主键自增长

    在数据库中建序列:SEQ_T_RESOURCE 第一种:会在传入该方法的的参数集合中添加主键元素,相当于:map.put("RES_ID",xxx); <insert id= ...

  5. 使用python命令构建最简单的web服务

    可以使用python自带的包建立最简单的web服务器,使用方法: 1)切换到服务器的根目录下 2)输入命令: python -m SimpleHTTPServer 3)使用wget或者在浏览器访问测试 ...

  6. echo -e 参数

    -e  若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出: \a   发出警告声:   \b  删除前一个字符:   \c  最后不加上换行符号:   \f  换行但光标仍旧停留在原 ...

  7. Expm 7_2区间调度问题

    [问题描述] 给定n个活动,其中的每个活动ai包含一个起始时间si与结束时间fi.设计与实现算法从n个活动中找出一个最大的相互兼容的活动子集S. 要求:分别设计动态规划与贪心算法求解该问题.其中,对贪 ...

  8. jmeter之正则表达式

    一.Jmeter关联的方式: Jmeter中关联可以在需要获取数据的请求上 右键-->后置处理器 选择需要的关联方式,如下图有很多种方法可以提取动态变化数据: 二.正则表达式提取器: 1.比如需 ...

  9. UDP template 代码

    服务端 from socket import * import json,struct client= socket(AF_INET,SOCK_STREAM) client.connect(('127 ...

  10. javascript NaN注意事项

    NaN直译是Not a number NaN是个特殊的number,它和任何值相比都不相等,甚至和它自己. NaN === NaN 这个表达式是false 唯一能判断NaN的方法是 IsNaN(NaN ...