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 |
依赖库装好之后,就可以安装、编译最新版的git了:
[root@guest ~]# cd /usr/local/src/ |
至此,最新版git配置完毕,可以查看其版本信息:
[root@guest git-2.26.0]# git version |
配置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 |
这里的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
之下,再次进行编译:
可以看到,已经可以成功编译。
问题解决,散花,不知道这是不是全网第一个解决这个问题的文章,不过还是惬意一下。
- Post Title: golang编译项目的一个巨坑
- Post Author: ggb0n
- Post Link: http://ggb0n.cool/2020/04/01/golang编译项目的一个巨坑/
- Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
1.TCTF2020部分题解
2.第五空间pwn题练习
3.堆溢出-Tcache_Attack
4.堆溢出-Housese_Of_XXX
5.堆溢出基础
6.入坑二进制