• GOPATH和GOROOT


    安装指定版本golang

    apt-get purge golang* //删除之前安装的文件
    add-apt-repository ppa:evarlast/golang-1.8
    apt-get update
    
    apt-get install golang-1.8
    
    vim ~/.bashrc
    PATH=$PATH:/usr/lib/go-1.8/bin
    source ~/.bashrc
    

    环境变量

    • GOROOT golang安装路径 包含golang源码和它们的二进制文件
    • GOPATH 工作目录

    查看安装之后的环境变量

    root@ubuntu:~# go env
    GOPATH=""
    GOROOT="/usr/lib/go-1.6"
    

    设置环境变量

    mkdir -p /home/Projects/Go  //创建工作目录
    
    vim ~/.bashrc               //编辑此文件 并添加如下代码
    
    GOPATH=/Home/Projects/Go
    export GOPATH
    PATH=$PATH:$GOPATH/bin # Add GOPATH/bin to PATH for scripting
    
    source ~/.bashrc            //生效配置
    

    再次查看环境变量

    root@ubuntu:~# go env
    GOPATH="/Home/Projects/Go"
    GOROOT="/usr/lib/go-1.6"
    

    创建自己的应用包

    mkdir -p $GOPATH/src/Hello //创建文件夹
    cd $GOPATH/src/Hello    //进入到目录
    vim Hello.go            //创建hello文件
    
    package Hello
    import "fmt"
    func Say(){
        fmt.Println("hello world")
    }
    
    • 这里需要大写

    编译应用

    • 任意目录执行 go install + 包名称
    • 包目录下执行 go install

    编译之前的目录

    root@ubuntu:/Home/Projects/Go# tree
    .
    └── src
        └── Hello
            └── Hello.go
    

    编译一个不存在的包

    root@ubuntu:/home/Projects/Go/src/hello# go build test
    can't load package: package test: cannot find package "test" in any of:
    	/usr/lib/go-1.8/src/test (from $GOROOT)
    	/Home/Projects/Go/src/test (from $GOPATH)
    
    • 这里可以看到默认会从GOROOT和GOPATH 找相对应的包

    编译

    go build Hello
    

    查看编译后的目录

    root@ubuntu:/Home/Projects# tree
    .
    └── Go
        ├── pkg
        │   └── linux_amd64
        │       └── Hello.a
        └── src
            └── Hello
                └── Hello.go
    
    5 directories, 2 files
    
    • 这里可以看到有一个pkg目录,下面有一个hello.a文件

    创建主文件并引用刚才创建的包文件

    mkdir main
    vim main.go
    
    package main
    
    import "Hello"
    
    func main(){
       Hello.Say(); 
    }
    

    编译程序并查看

    go build
    
    root@ubuntu:/Home/Projects/Go# tree
    .
    ├── pkg
    │   └── linux_amd64
    │       └── Hello.a
    └── src
        ├── Hello
        │   └── Hello.go
        └── main
            ├── main
            └── main.go   
    
    • 这里多了一个main文件夹就是可执行文件

    执行可执行文件

    root@ubuntu:/Home/Projects/Go/src/main# ./main 
    hello world
    

    安装应用并查看

    root@ubuntu:/Home/Projects/Go/src/main# go install
    
    root@ubuntu:/Home/Projects/Go# tree
    .
    ├── bin
    │   └── main
    ├── pkg
    │   └── linux_amd64
    │       └── Hello.a
    └── src
        ├── Hello
        │   └── Hello.go
        └── main
            └── main.go
    
    • 可以看到 多了一个bin目录 且目录下面有一个main文件

    执行应用

    root@ubuntu:/# main
    hello world
  • 相关阅读:
    sizeof
    {面试题10: 二进制中1的个数}
    {面试题9: 斐波那契数列}
    gcc常用选项
    mount.nfs: access denied by server while mounting localhost:/home/xuwq/minilinux/system
    ubuntu bash提示找不到文件或目录
    linux 编译内核[scripts/kconfig/dochecklxdialog] 错误
    最简单的抓包程序
    linux命令行解析函数介绍
    逻辑地址到线性地址的转换
  • 原文地址:https://www.cnblogs.com/alin-qu/p/8541197.html
Copyright © 2020-2023  润新知