设为首页 收藏本站
查看: 1522|回复: 0

[经验分享] golang安装卸载 linux+windows+raspberryPI 平台

[复制链接]
发表于 2018-9-20 08:45:42 | 显示全部楼层 |阅读模式
  参考  https://golang.org/doc/install
  自ECUG2013洗脑回来,就渴望早点接触Go
  听着许式伟和谢孟军的演讲
  发现go的网络库的确很强大,高负载利器,语言的一些精简导致很容易写出高效代码,而且开发效率  很高 不,应该是非常高   。(rpcjson,xml,.....其他一些自带的库也都很成熟)
  是不是传说中的好东东,必须自己用了才能知道
  ECUG视频传送们
  www.youtube.com/watch?v=af7qOeN9Mvk
  推荐一些相关书籍
  学写的话,当然 书籍更系统
  推荐书籍:
  1.英文版《the way to go 》    中文版 《Go语言程序设计》  IVO BALBAERT
  2.中文版  《学习Go语言》                        www.mikespook.com/learning-go/
  3.  雨痕的  Go 学习笔记 第四版.pdf             https://github.com/qyuhen/book
  4.英文版《Programming in Go 》  中文版《Go语言程序设计》 作者:Mark Summerfield     http://item.jd.com/11281696.html
  5.英文版《The Go Programming Language》  作者:David Chisnall
  6. 《 Network programming with Go》
  7. 《Mastering Concurrency in Go - Nathan Kozyra》
  如果是过web 相关
  谢孟军《Go Web编程》https://github.com/astaxie/build-web-application-with-golang/
  查看自己的开发环境:
  $lsb_release -a
  Ubuntu 12.04.3 LTS
  $uname -a    (or  $cat /proc/version)
  Linux 3.8.0-33-generic    gcc version 4.6.3

Operating systemArchitecturesNotes
FreeBSD 8-STABLE or later
amd64
Debian GNU/kFreeBSD not supported
Linux 2.6.23 or later with glibc
amd64, 386, arm
CentOS/RHEL 5.x not supported; install from source for ARM
Mac OS X 10.7 or later
amd64
use the clang or gcc† that comes with Xcode‡
Windows XP or later
amd64, 386
use MinGW gcc†. No need for cygwin or msys.  golang支持交叉编译,也就是说你在32位平台的机器上开发,可以编译生成64位平台上的可执行程序。
  环境变量说明:
  
$GOROOT  指向golang安装之后的根目录,windows平台下默认为c:\go,会在安装过程中由安装程序自动写入系统环境变量。
  
$GOARCH  目标平台(编译后的目标平台)的处理器架构(386、amd64、arm)
  
$GOOS     目标平台(编译后的目标平台)的操作系统(darwin、freebsd、linux、windows)
  
$GOBIN     指向安装之后根目录下的bin目录,即$GOROOT/bin,windows平台下 MSI安装路径 默认为c:\go\bin,会在安装过程中由安装程序自动添加到PATH变量中
  以上   GOARCH ,  GOOS     都可以默认不设置
  Go语言交叉编译,运行在不同的操作系统
  若用的Mac 64位,需要编译一个Windows 32位的可执行程序,一句搞定 “CGO_ENABLED=0 GOOS=windows GOARCH=386 go build”
  CGO_ENABLED设置是否需要使用CGO,本例子不需要,设置为0,如果需要使用CGO编译,设置为1
  linux 安装golang=================
  2种安装方式
  1. https://code.google.com/p/go/downloads/list
  直接下载 go1.2.linux-amd64.tar.gz
  解压命令 tar -zxvf go1.2.linux-amd64.tar.gz
  PS.还有源码包   go1.2.src.tar.gz(作为码农,不看源码怎么行,关于语言有疑问的可以直接看代码 :D )
  2.命令行下载

  $hg clone -u>  然后运行bash脚本安装
  

$cd go/src  
$./all.bash
  运行all.bash后出现"ALL TESTS PASSED"字样时才算安装成功。
  (当然apt-get install golang 最简单)
  

  假设解压到了$HOME/go中
  系统级别
  $cd /etc
  $cat /etc/.profile
  $ll  看此文件的权限
  $sudo /etc/.profile
  用户级别
  $cat $HOME/.profile      意思一样$cat ~/.profile  ($HOME/.profile 或者 $HOME/.bashrc 都可以添加 一下环境变量)
  参考:
  https://en.wikipedia.org/wiki/Bash_%28Unix_shell%29

Linux中profile、bashrc、bash_profile之间的区别和联系
  http://blog.csdn.net/chenchong08/article/details/7833242

.bash_profile和.bashrc的什么区别及启动过程,超级详细
  http://bbs.chinaunix.net/thread-1924583-1-1.html
  

.bash_profile和.bashrc的什么区别及启动过程  
.bash_profile和.bashrc的什么区别
  
bash_profile和.bashrc的什么区别
  

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

  

  
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
  
并从/etc/profile.d目录的配置文件中搜集shell的设置.
  
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
  
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该
  
文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
  
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该
  
该文件被读取.
  
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
  

  
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是\"父子\"关系.
  

  
~/.bash_profile 是交互式、login 方式进入 bash 运行的
  
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
  
通常二者设置大致相同,所以通常前者会调用后者。
  

  
--------------------------------------------------------------------------------
  
在登录Linux时要执行文件的过程如下:
  

  
在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个(根据不同的linux操作系统的不同,命名不一样),
  

  
执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。
  
如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。
  

  
因为在 ~/.bash_profile文件中一般会有下面的代码:
  
if [ -f ~/.bashrc ] ; then
  

  
. ./bashrc
  

  
fi
  

  
~/.bashrc中,一般还会有以下代码:
  
if [ -f /etc/bashrc ] ; then
  

  
. /bashrc
  

  
fi
  

  
所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。
  

  
执行顺序为:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout
  

  
关于各个文件的作用域,在网上找到了以下说明:
  

  
(1)/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
  

  
(2)/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
  

  
(3)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
  

  
(4)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
  

  
(5) ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。
  

  
(6)~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。
  

  

  

  
/etc/profile和/etc/environment等各种环境变量设置文件的用处
  

  
先将export LANG=zh_CN加入/etc/profile ,退出系统重新登录,登录提示显示英文。
  

  
将/etc/profile 中的export LANG=zh_CN删除,将LNAG=zh_CN加入/etc/environment,退出系统重新登录,登录提示显示中文。
  

  
用户环境建立的过程中总是先执行/etc/profile然后在读取/etc/environment。为什么会有如上所叙的不同呢?
  

  
应该是先执行/etc/environment,后执行/etc/profile。
  

  
/etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。
  

  
系统应用程序的执行与用户环境可以是无关的,但与系统环境是相关的,所以当你登录时,你看到的提示信息,象日期、时间信息的显示格式与系统环境的LANG是相关的,缺省LANG=en_US,如果系统环境LANG=zh_CN,则提示信息是中文的,否则是英文的。
  

  
对于用户的SHELL初始化而言是先执行/etc/profile,再读取文件/etc/environment.对整个系统而言是先执行/etc/environment。这样理解正确吗?
  

  
/etc/enviroment --> /etc/profile --> $HOME/.profile -->$HOME/.env (如果存在)
  

  
/etc/profile 是所有用户的环境变量
  

  
/etc/enviroment是系统的环境变量
  

  
登陆系统时shell读取的顺序应该是
  
/etc/profile ->/etc/enviroment -->$HOME/.profile -->$HOME/.env
  
原因应该是jtw所说的用户环境和系统环境的区别了
  

  
如果同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不同的值那应该是以用户环境为准了。
  

  

export GOROOT=$HOME/go  export GOBIN=$HOME/go/bin
  export PATH=$PATH:$GOROOT/bin
  source  $HOME/.profile或者$HOME/.bashrc 更新配置
  

  具体参考http://godoc.golangtc.com/doc/install/source
  然后是工作目录,代码放在这个目录中
  

$ export GOPATH=$HOME/workproject  PS. arm树莓派的话,也是可以编译执行的(内置gcc交叉编译工具) 和linux 一样设置,只不过,需要设置$GOARCH 为arm,$GOOS
  如果万一你配置文件修改错误,导致ls, vim 等bash命令无效。直接用export可以临时恢复。
  

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin  
执行完以上的命令后,
  你可以重新执行 source /etc/profile 或者 source ~/.bashrc 命令来让你的配置文件永久恢复生效
  

  ===============================================
  windows 安装go,  如果要用CGO,需要安装MINGW ( 因为需要gcc)========
  默认路径是c:\go
  1>.环境变量
  1.1>MSI环境变量已经设置OK,
  1.2>zip 需要自己设置环境变量
  全局变量
  添加
  GOROOT     c:\go
  GOBIN         c:\go\bin
  GOPATH      d:\workproject
  然后在path 在后面添加   xxxxxx;%GOROOT%;%GOBIN%;%GOPATH%;
  【若成功,可以看到以下version信息】
  C:\go\>go version
  go version go1.5.1 windows/amd64
  2>.编译
  然后管理员权限启动cmd,
  进入【GOROOT  目录】  编译/test/helloworld.go
  然后试下编译  go build helloworld.go
  【若成功,可以看到以下信息】
  hello world
  关于IDE
  推荐下 国人开发的 liteide
  配合IDE的话,载入*.go文件后,  点击【编辑当前环境】
DSC0000.jpg


改成如下信息(更具自己的OS来修改,我的是win10 64位,goroot 在c:\go\,)
==============  # native compiler windows
  

  

GOROOT=c:\go\  

GOBIN= c:\go\bin\  

GOARCH=amd64  

GOOS=windows  

#CGO_ENABLED=1  

  

PATH=c:\mingw32\bin;%GOROOT%\bin;%PATH%  

  

#LITEIDE_GDB=gdb  

LITEIDE_MAKE=mingw32-make  

LITEIDE_TERM=%COMSPEC%  

LITEIDE_TERMARGS=  

LITEIDE_EXEC=%COMSPEC%  

LITEIDE_EXECOPT=/C  

  ==============
  点击编译,运行 就可以看到结果了。
  1.5以上版本以为 使用了自举,所以需要用老版本的go 来编译新版本,所以出现如下错误
  =================
  C:\go\src>all.bat
  ##### Building Go bootstrap tool.
  cmd/dist
  ERROR: Cannot find C:\Users\scott\Go1.4\bin\go.exe
  "Set GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4."
  ==================
  解决办法: 下载1.4.x 版本的go 后(是需要MINGW gcc 编译1.5的代码), 设置GOROOT_BOOTSTRAP,GOROOT_BOOTSTRAP\bin,
  GOROOT_BOOTSTRAP     c:\go
  然后运行all.bat,就可以得到新版本, 再把go目录名字改下go1.4, go1.6改成go
  自举
  C:\go\src>make.bat
  ===========================
  linux 可以参考以下网页
  http://mikespook.com/2015/06/如何从源代码构建-go-1-5-开发环境/
  卸载也是很重要的,(可以通过go env 来了解GOROOT...信息 , 卸载也就知道在哪了)

Uninstalling Go
  To remove an existing Go installation from your system delete the go directory. This is usually /usr/local/go under Linux, Mac OS X, and FreeBSD or c:\Go under Windows.
  You should also remove the Go bin directory from your PATH environment variable. Under Linux and FreeBSD you should edit /etc/profile or $HOME/.profile. If you installed Go with the Mac OS X package then you should remove the /etc/paths.d/go file. Windows users should read the section about setting environment variables under Windows.
  $go version 我是ubuntu14.04 默认安装的go1.2.1版本
  $go env 查看之前版本的go 的GOROOT、GOTOOLDIR、GOPATH等信息
  默认安装版本 需要删除
  1. /usr/lib/go
  2. /usr/share/go
  3. /usr/bin/go
  然后更新自己的新版本的go环境变量 就可以了
  go version
  go env
  都正常了
  =================
  linux 用go1.4自举编译go1.7
  1.添加环境变量
  vim ~/.bashrc
  export GOROOT=/usr/local/go
  export GOBIN=$GOROOT/bin
  export PATH=$PATH:$GOROOT/bin
  export GOPATH=$HOME/goWorkproject
  export GOROOT_BOOTSTRAP=/usr/local/go1.4
  更新环境变量  source ~/.bashrc
  2.进入go1.7的目录  /usr/local/go
  cd go/src/
  运行 ./make.bash
  .......
  Installed Go for linux/amd64 in /usr/local/go
  Installed commands in /usr/local/go/bin
  查询版本
  root@iZ25290crlqZ:/usr/local/go/src# go version
  go version go1.7 linux/amd64
  OK就算完成了。
  http://studygolang.com/topics/1852



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-598609-1-1.html 上篇帖子: golang 查询数据库操作 下篇帖子: golang yaml配置文件解析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表