golang编译项目的一个巨坑

golang编译项目的一个巨坑

最近在学一些新东西,涉及到了搭obfs4网桥,由于官方提供的网桥项目是go语言编写的,之前又没学过、也没搭过相关环境,可以说基本是从零搞起,其中遇到的问题…算了,下面这个问题必须记录,网上都没找到解决方案,一定要记录一下。

最初的环境搭建

由于golang编写的项目会利用git去寻找依赖库,因此首先就需要配置git环境,由于之前知道了旧版的git可能会导致一些问题,于是就手动安装了新版的git。

配置git环境

机器上可能已经存在git,可以通过如下命令查看版本信息:

git version

如果版本较低,最好就手动更新一下。

首先移除旧版本的git:

yum remove git

然后安装最新版的git,当然最好先装一下依赖库:

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
yum install gcc perl-ExtUtils-MakeMaker

依赖库装好之后,就可以安装、编译最新版的git了:

[root@guest ~]# cd /usr/local/src/
[root@guest src]# wget https://www.kernel.org/pub/software/scm/git/git-2.26.0.tar.xz
[root@guest src]# tar -vxf git-2.26.0.tar.xz
[root@guest src]# cd git-2.26.0
[root@guest git-2.26.0]# make prefix=/usr/local/git all
[root@guest git-2.26.0]# make prefix=/usr/local/git install
[root@guest git-2.26.0]# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile
[root@guest git-2.26.0]# source /etc/profile

至此,最新版git配置完毕,可以查看其版本信息:

[root@guest git-2.26.0]# git version
git version 2.26.0

配置golang环境

golang的环境是参考网上的博客装的,其实就是利用yum安装:

[root@guest ~]# yum -y install golang

最初装完之后也就没有管git的版本了,直接把obfs4的项目放在了go/src下进行编译了。

报错信息

利用上面的方法搭建的环境直接去编译项目,结果一直报错:

不管是改项目目录、换方式编译,一直都是找不到依赖库的错误,甚至想到了会不会是作者的项目有问题、还给作者发了封邮件…请项目作者不要打我啊…

结果两天都没搞定…都要心灰意冷了…

偶然之间,我发现卸载golang的时候提示会同时卸载git,嗯???!!!
这个git还是1.8版本的,嗯???!!!

于是就实验了一下,我重新用yum装golang结果确实提示会同时装git-1.8.1,装上之后又看了一下git版本,1.8.1,woc…问题不会在这吧…实践证实,问题就在这。

解决问题

首先把当前的golang直接yum remove掉,最好清的干净一些:

rm -rf /usr/local/go

git最新版的配置就不说了,上面已经讲到了,说一下最新版golang的安装配置。

官网下载最新版的压缩包,拖到vps里,当然也可以直接wget,之后进行解压:

tar -zxf go1.x.x.linux-amd64.tar.gz -C /usr/local

然后配置环境变量:

vi /etc/profile

profile末尾添加如下内容:

#golang env config
export GO111MODULE=on
export GOROOT=/usr/local/go
export GOPATH=/home/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

这里的GO111MODULE配置是go1.11后出的一种新的包管理go modules方式代替vendor机制,可以不需要GOPATH,项目代码也不一定要放在GOPATH下面。

  • GO111MODULE=auto 自动
  • GO111MODULE=on 使用go modules,不会在vendor和gopath找依赖
  • GO111MODULE=off 使用vendor 或者gotpath

然后到/home下新建gopath文件夹,新建之后即可使配置生效:

source /etc/profile

查看golang版本go version已经是最新版。

测试

将obfs4的项目放到/home/gopath之下,再次进行编译:

可以看到,已经可以成功编译。

问题解决,散花,不知道这是不是全网第一个解决这个问题的文章,不过还是惬意一下。

参考:
git最新版配置
golang最新版配置
obfs4网桥配置

Comments


:D 一言句子获取中...

Loading...Wait a Minute!