从零开始构建向量数据库:Milvus 的源码编译安装(一)
在知乎上新开了关于“向量数据库”内容的专栏[1],本文将详细介绍如何在x和ARM架构的Linux系统上编译安装开源项目Milvus,这个项目由Linux Foundation AI & Data基金会支持,常与Weaviate和Elasticsearch相提并论[2][3]。 由于Milvus主要在GitHub进行开发,中文网络中关于编译安装的代码自动重构源码教程很少,且大多是过时的1.x版本资料,而Milvus的版本迭代迅速,目前主要提供Docker容器安装,本地开发者或追求透明度的开发者可能会觉得不够友好。本文将从头开始,逐步引导你进行编译安装。前置准备
在开始前,专利源码需要确保操作系统、开发环境和必要的依赖已经准备妥当。Linux作为主力生产环境,本文将重点介绍在Ubuntu上编译。macOS和Windows上的步骤类似,但这里主要针对Linux。pythonb站源码操作系统
推荐使用Ubuntu,无论是服务器、容器基础镜像,还是个人笔记本。具体配置和安装细节可以参考我在其他文章中介绍的《笔记本上搭建Linux学习环境》[6]。开发环境
Milvus主要使用Golang编写,txl网站源码同时包含C++代码。确保Golang和C++环境可用,参考《搭建Golang开发环境》[8],并注意Milvus官方推荐的版本。源码获取
获取Milvus源码有两种方式:Git Clone或下载压缩包,其中Git Clone可能需要借助国内镜像加速。paperwork源码下载具体步骤包括设置代码仓库的上游,确保代码同步。编译基础依赖
项目依赖OpenBLAS加速向量计算,详细安装步骤在《走进向量计算:OpenBLAS编译》[]中有详述。准备构建依赖:cmake
确保cmake版本至少为3.,Ubuntu .需手动安装,而Ubuntu .可直接使用apt。不同版本可能有差异,注意官方文档推荐的版本。额外依赖:clang-format和clang-tidy
项目代码中需要clang-format和clang-tidy,Ubuntu .和.的安装方式各有不同,务必安装正确版本以保持和官方构建一致。编译 Milvus
切换到 Milvus 代码目录,执行make命令编译。整个过程可能耗时,但完成后将在./bin/目录下找到可执行文件。总结
本文详细介绍了在Ubuntu .和.环境中编译安装Milvus的步骤,包括操作系统、开发环境和依赖的安装。后续文章将深入探讨容器镜像构建优化以及在MacOS上的安装指南。 期待你的反馈,如果觉得有用,请点赞和分享。如有任何问题或需要更新,请关注后续内容更新,感谢支持!linuxè¿è¡armç¨åºarmlinuxç¨åº
å¦ä½ç¼è¯armlinuxçgoï¼Golangä¹å°±æ¯Goè¯è¨ï¼ç°å¨å·²ç»åè¡å°1.4.1çæ¬äºï¼è¯è¨ç¹æ§ä¼è¶æ§åèåGoogle强大é å±±ä»ä¹çå°±ä¸å¤è¯´äºãGolangçå®æ¹æä¾äºå¤ä¸ªå¹³å°ä¸çäºè¿å¶å®è£ å ï¼éæ¾çæ¯å¹¶é没æåå¸ARMå¹³å°çäºè¿å¶å®è£ å ãARMå¹³å°æ²¡åæ³ç´æ¥ä»å®ç½ä¸è½½äºè¿å¶å®è£ å æ¥å®è£ ï¼å¥½å¨Golangæ¯æ¯æå¤å¹³å°å¹¶ä¸å¼æºçè¯è¨ï¼å æ¤å¯ä»¥éè¿ç´æ¥å¨ARMå¹³å°ä¸ç¼è¯æºä»£ç æ¥å®è£ ãæ´ä¸ªè¿ç¨ä¸»è¦å æ¬ç¼è¯å·¥å ·é ç½®ãè·åGolangæºä»£ç ã设置Golangç¼è¯ç¯å¢åéãç¼è¯ãé ç½®Golangè¡ç¯å¢åéçæ¥éª¤ã
注ï¼æ¬æéç¨æ èæ´¾åæµè¯ï¼å 为æ èæ´¾æ¯åºäºARMå¹³å°çã
1ãç¼è¯å·¥å ·é ç½®
æ®è¯´ä¸ä¸ªçæ¬çgolangç¼è¯å·¥å ·è¦ä½¿ç¨golangèªå·±æ¥åï¼ä½ç®åè¿æ¯ä½¿ç¨Cç¼è¯å·¥å ·çãå æ¤ï¼é¦å è¦é 置好Cç¼è¯å·¥å ·ï¼
1.1å¨UbuntuæDebianå¹³å°ä¸å¯ä»¥ä½¿ç¨sudoapt-getinstallgcclibc6-devå½ä»¤å®è£ ï¼æ èæ´¾çRaspBianç³»ç»æ¯åºäºDebianä¿®æ¹çï¼æ以å¯ä»¥ä½¿ç¨è¿ç§æ¹æ³å®è£ ã
1.2å¨RedHatæCentOS6å¹³å°ä¸å¯ä»¥ä½¿ç¨sudoyuminstallgcclibc-develå½ä»¤å®è£ ã
å®è£ å®æåå¯ä»¥è¾å ¥gcc--versionå½ä»¤éªè¯æ¯å¦æåå®è£ ã
2ãè·ågolangæºä»£ç
2.1ç´æ¥ä»å®ç½ä¸è½½æºä»£ç å缩å ã
golangå®ç½æä¾golangçæºä»£ç å缩å ï¼å¯ä»¥ç´æ¥ä¸è½½ï¼ææ°ç1.4.1çæ¬æºä»£ç é¾æ¥ï¼/golang/go1.4.1.src.tar.gz
2.2使ç¨gitå·¥å ·è·åã
golang使ç¨gitçæ¬ç®¡çå·¥å ·ï¼ä¹å¯ä»¥ä½¿ç¨gitè·ågolangæºä»£ç ãæ¨è使ç¨è¿ä¸ªæ¹æ³ï¼å 为以åå¯ä»¥éæ¶è·åææ°çgolangæºä»£ç ã
2.2.1é¦å 确认ARMå¹³å°ä¸å·²ç»å®è£ äºgitå·¥å ·ï¼å¯ä»¥ä½¿ç¨git--versionå½ä»¤ç¡®è®¤ãä¸è¬linuxå¹³å°é½å®è£ äºgitï¼æ²¡æçè¯å¯ä»¥èªè¡å®è£ ï¼ä¸åå¹³å°çå®è£ æ¹æ³å¯ä»¥åèï¼/download/linux
2.2.2å éè¿ç¨golangçgitä»åºå°æ¬å°
å¨ç»ç«¯cdå°ä½ æ³è¦å®è£ golangçç®å½ï¼ç¡®ä¿è¯¥ç®å½ä¸æ²¡æå为goçç®å½ãç¶å以ä¸å½ä»¤è·å代ç ä»åºï¼
gitclone/go
大éå°åºå¯è½ä¼è·å失败ï¼å¨ä¸ç¿»å¢çæ åµä¸æè¯äºå 次é½æ²¡æåï¼åå 大家é½æçã好å¨googleå·²ç»å°golangä¹æ管å°githubä¸é¢ï¼æ以ä¹å¯ä»¥éè¿ä¸é¢å½ä»¤è·åï¼
gitclone/golang/go.git
è§ç½ç»æ åµï¼ä¸è½½å¯è½éè¦ä¸å°æ¶é´ãæ2Mç带宽è±äºå°è¿ä¸¤ä¸ªå°æ¶æä¸è½½å®ï¼è½ç¶æ´ä¸ªé¡¹ç®ä¸è¿å åå ==
ä¸è½½å®æåï¼å¯ä»¥çå°ç®å½ä¸å¤äºä¸ä¸ªgoç®å½ï¼éé¢å³ä¸ºgolangçæºä»£ç ï¼å¨ç»ç«¯ä¸æ§è¡cdgoå½ä»¤è¿å ¥è¯¥ç®å½ã
æ§è¡ä¸é¢å½ä»¤æ£åºgo1.4.1çæ¬çæºä»£ç ï¼å 为ç°å¨å·²ç»ææ°ç代ç æ交ä¸å»äºï¼ææ°ç代ç å¯è½ä¸æ¯æ稳å®çï¼
gitcheckoutgo1.4.1
è³æ¤ï¼ææ°1.4.1åè¡ççæºä»£ç è·åå®æ¯
3ã设置golangçç¼è¯ç¯å¢åé
主è¦æGOROOTãGOOSãGOARCHãGOARMå个ç¯å¢åééè¦è®¾ç½®ï¼å 解éå个ç¯å¢åéçæä¹ã
3.1GOROOT
主è¦ä»£è¡¨golangæ ç»æç®å½çè·¯å¾ï¼ä¹å°±æ¯ä¸é¢gitæ£åºçgoç®å½ãä¸è¬å¯ä»¥ä¸ç¨è®¾ç½®è¿ä¸ªç¯å¢åéï¼å 为ç¼è¯çæ¶åé»è®¤ä¼ä»¥goç®å½ä¸srcåç®å½ä¸çall.bashèæ¬è¿è¡æ¶çç¶ç®å½ä½ä¸ºGOROOTçå¼ã为äºä¿é©èµ·è§ï¼å¯ä»¥ç´æ¥è®¾ç½®ä¸ºgoç®å½çè·¯å¾ã
3.2GOOSåGOARCH
åå«ä»£è¡¨ç¼è¯çç®æ ç³»ç»åå¹³å°ï¼å¯éå¼å¦ä¸ï¼
GOOSGOARCH
darwin
darwinamd
dragonfly
dragonflyamd
freebsd
freebsdamd
freebsdarm
linux
linuxamd
linuxarm
netbsd
netbsdamd
netbsdarm
openbsd
openbsdamd
plan
plan9amd
solarisamd
windows
windowsamd
éè¦æ³¨æçæ¯è¿ä¸¤ä¸ªå¼ä»£è¡¨çæ¯ç®æ ç³»ç»åå¹³å°ï¼èä¸æ¯ç¼è¯æºä»£ç çç³»ç»åå¹³å°ãæ èæ´¾çRaspBianæ¯linuxç³»ç»ï¼æ以è¿äºGOOS设置为linuxï¼GOARCH设置为armã
3.3GOARM
表示使ç¨çæµ®ç¹è¿ç®åå¤çå¨çæ¬å·ï¼åªå¯¹armå¹³å°æç¨ï¼å¯éå¼æ5ï¼6ï¼7ãå¦ææ¯å¨ç®æ å¹³å°ä¸ç¼è¯æºä»£ç ï¼è¿ä¸ªå¼å¯ä»¥ä¸è®¾ç½®ï¼å®ä¼èªå¨å¤æéè¦ä½¿ç¨åªä¸ä¸ªçæ¬ã
æ»ç»ä¸æ¥ï¼å¨æ èæ´¾ä¸è®¾ç½®golangçç¼è¯ç¯å¢åéï¼å¯ç¼è¾$HOME/.bashrcæ件ï¼å¨æ«å°¾æ·»å ä¸é¢å 容ï¼
exportGOROOT=ä½ çgoç®å½è·¯å¾
exportGOOS=linux
exportGOARCH=arm
ç¼è¾å®åä¿åï¼æ§è¡source~/.bashrcå½ä»¤è®©ä¿®æ¹çæã
4ãç¼è¯æºä»£ç
ç¯å¢åéé ç½®å®æèªåå°±å¯ä»¥å¼å§ç¼è¯æºä»£ç ãå¨goç®å½ä¸çsrcåç®å½ä¸ï¼ä¸»è¦æall.bashåmake.bash两个èæ¬ï¼å¦å¤è¿æ两个all.batåmake.batèæ¬éç¨äºwindowå¹³å°ï¼ãç¼è¯å®é ä¸å°±æ¯æ§è¡å ¶ä¸ä¸ä¸ªèæ¬ï¼ä¸¤è çåºå«å¨äºall.bashå¨ç¼è¯å®æåè¿ä¼æ§è¡ä¸äºæµè¯å¥ä»¶ãå¦æå¸æåªç¼è¯ä¸æµè¯ï¼å¯ä»¥è¿è¡make.bashèæ¬ã使ç¨cdå½ä»¤è¿å ¥goä¸srcç®å½ï¼æ§è¡./all.bashæè ./make.bashå½ä»¤å³å¯å¼å§ç¼è¯ãç±äºç¡¬ä»¶æ åµä¸åï¼ç¼è¯èè´¹çæ¶é´ä¸åãå¨æçBåæ èæ´¾ç¼è¯è¿ç¨è±è´¹äºå°è¿å个å°æ¶ï¼ç¼è¯å®æåæ§è¡çæµè¯å¥ä»¶åè±è´¹äºå·®ä¸å¤ä¸ä¸ªå°æ¶ï¼æ»å ±è±è´¹äºä¸ä¸ªåå°æ¶å·¦å³ã
5ãé ç½®golangè¿è¡ç¯å¢åé
ç¼è¯å®æåï¼goç®å½ä¸ä¼çæbinç®å½ï¼éé¢å°±æ¯goçè¿è¡èæ¬ã为äºä»¥å使ç¨æ¹æ³ï¼å¯ä»¥å°è¿ä¸ªbinè·¯å¾æ·»å å°PATHç¯å¢åéä¸ãåæ ·ç¼è¾~/.bashrcæ件ï¼å 为åé¢è®¾ç½®è¿GOROOTç¯å¢åéæågoç®å½äºï¼æ以åªéè¦å¨æ«å°¾å ä¸
exportPATH=$PATH:$GOROOT/bin
ä¿åååæ ·æ§è¡source~/.bashrcå½ä»¤è®©ç¯å¢åéçæã
è³æ¤ï¼golangæºä»£ç ç¼è¯å®è£ æåãæ§è¡goversionåºè¯¥å°±è½çå°å½ågolangççæ¬ä¿¡æ¯ï¼è¡¨ç¤ºç¼è¯å®è£ æåã
linuxä¸ARMå¹³å°ç¼è¯ç¼åçå®æç¨åºå¦ä½å¨windowsç¯å¢ä¸è¿è¡ï¼
ç´æ¥å¨windowä¸è¿è¡ä¸äºãåªè½å¨windowä¸å®è£ èææºï¼åå®è£ linuxç³»ç»ï¼å¨èææºä¸çlinuxégccç¼è¯ä½ çç¨åº.
armææ¯éè¦å¦ä»ä¹ä¸ä¸ï¼
åå¼å§ï¼1ï¼å¦ä¹ Linuxç³»ç»å®è£ ã常ç¨å½ä»¤ãåºç¨ç¨åºå®è£ ã2ï¼å¦ä¹ Linuxä¸çCç¼ç¨ãè¿æ¬ä¹¦å¿ å¦ãUNIXç¯å¢é«çº§ç¼ç¨ãããUNIXç½ç»ç¼ç¨ãï¼RechardStevensåçï¼Cé«æ大é½å¦ä¹ è¿ãCåæéãããC缺é·ä¸é·é±ãããé«è´¨éC/C++ç¼ç¨æåãããCä¸å®¶ç¼ç¨ãããTheCprogrammingLanguageã3ï¼ç¨åºå大é½è¦å¦ï¼æ°æ®ç»æï¼åµå ¥å¼ç¨åºåæ°æ®ç»æå¿ å¦ï¼4ï¼åºå±å¼å人å大é½è¦å¦ï¼å¾®æºåçã计ç®æºä½ç³»ç»æï¼åµå ¥å¼å¼å人åå¿ å¦ï¼5ï¼åçæºå¯ä»¥è®©ä¸ä¸ªä»äºè½¯ä»¶å¼åç人äºè§£åå¦ä½æä½ç¡¬ä»¶ï¼æå¿ è¦å¦ï¼å 为ä¸å¼å§å°±ä»ARMå ¥æï¼ä¸å¤ªç°å®ï¼6ï¼ARMä½ç³»ç»æï¼å ¶ä¸ææ±ç¼ã7ï¼æ°åçµè·¯æå¿ è¦å¦ä¹ ï¼ä¸ç¶ä½ å¨ååºå±å¼åæ¶ççä¼ä¸ç¥éæä¹çåçå¾ï¼èµ·ç ä¹å¾æä¸å ¥é¨å§ã8ï¼ARM+Linuxåºç¨ç¨åºå¼åï¼åææ¯è¦æå¼åæ¿ï¼å°æ¤ï¼å强ç®æ¯å¨åµå ¥å¼Linuxè¿ä¸ªè¡ä¸æäºåæ¥å ¥é¨äºï¼ä½éæ¾çæ¯è¿è¿è¿è¿ä¸å¤ï¼è¿å¾ç»§ç»ï¼å 为è¿ä¸åµå ¥å¼ï¼å¾åæé«æã9ï¼è¦ååºå±å¼åï¼å°±å¿ é¡»ç¥é软硬件ä¹é´æ¯å¦ä½è¡æ¥åé åå·¥ä½çï¼é£ä¹çµåææ¯åºè¯¥è¦å¥½å¥½å¦ä¹ äºï¼å¾å¤æ¶åä¼ç¨å°æ¨¡æçµè·¯ç¥è¯ï¼è¿æ¯åºå«å¥½æä¸èé¸çä¸åä¹å¤ä¹ä¸ãï¼Linuxä¸çæ±ç¼è¦å¦ï¼è¿æ ·ä½ æè½çæ£äºè§£ä½ åçç¨åºæ¯å¦ä½å¨ä¸ä¸ªç¹å®ç硬件ä¸è·çãè¿æ¯åºå«å¥½æä¸èé¸çä¸åä¹å¤ä¹äºãï¼TCP/IPåè®®æ è¦å¦ï¼ææçåµå ¥å¼é«æé½å¾ææ¡çä¸è¥¿ï¼è¿æ¯åºå«å¥½æä¸èé¸çä¸åä¹å¤ä¹ä¸ãï¼æäºè¿äºä¸è¥¿ï¼æ¿ä¸Linux驱å¨å·²ç»ä¸åè¯ä¸ï¼éè¦ä½ å»å¦ä¹ Linuxå æ ¸æºä»£ç åLinux驱å¨ç¨åºè®¾è®¡ï¼è¿æ¯ä¸ä¸ªææ¯ååãå°æ¤ï¼ä½ å·²ç»ç®æ¯åµå ¥å¼Linuxçä¸çº§äººç©äºï¼ç»§ç»å¾ä¸ï¼ï¼é³é¢ãè§é¢ç解ç è¯ç ææ¯ä½ å¾å¦ãï¼åç§ICï¼åç§bootloaderä½ è½å¤åä¸å ¶å¼å设计ãï¼èªè¡è®¾è®¡å¼åæ°äº§åï¼æ°ææ¯ã
armççubuntuå¯ä»¥å®è£ ä»ä¹è½¯ä»¶?å¯ä»¥åxubuntuç软件éç¨åï¼
æ¶æä¸ä¸æ ·ä¸ä¸ªxä¸ä¸ªarmï¼è½¯ä»¶ä¸è½éç¨ï¼ä¸è¿linuxä¸è¬é½æä¾æºä»£ç çï¼ç¨arm-linux-gccç¼è¯ä¸ä¸å°±è½ç¨äº.
armlinuxå®è£ apkarmlinuxå®è£
å®è£ 好arm-linux-gccåï¼å¦ä½è®¾ç½®ç¯å¢åéï¼ä»¥ä¸3ä¸ªå ¶å®é½æ¯ä¸æ ·çä½ç¨ï¼é½æ¯éè¿æ¹åPATHç¯å¢åéã
ä¸åçæ¯ï¼/etc/profileæ¯å¨å¯å¨ä¸ä¸ªäº¤äºç»éshellçæ¶å被è°ç¨ï¼éè¿/bin/loginç»éï¼TTYä¸çå¼æºç»å½å°±æ¯è¿ä¸ªï¼/etc/bashrcåæ¯å¨ä¸ä¸ªäº¤äºçéç»éshellå¯å¨çæ¶å被è°ç¨ï¼éè¿å½ä»¤è¡è¿è¡ï¼ä¾å¦å¨å½ä»¤è¡è¾å ¥bashï¼æ以æä¹è®¾ç½®å°±è¦çéè¦ï¼ä¸è¬æ¥è¯´ï¼åè¿ç§è®¾ç½®å·¥å ·é¾çç¯å¢åéï¼è®¾ç½®å¨/etc/profileéä¼æ´å 好ãexportæ¯ä¸ä¸ªç¨äºè®¾ç½®ç¯å¢åéçæ令ï¼ä½æ¯BASHæ¯æç´æ¥è®¾ç½®ï¼æ以å¦æä½ çæºå¨æ¯BASHä½ä¸ºshellçè¯ï¼ä¸è¬Linuxé½æ¯çï¼ï¼å¯ä»¥ä¸ä½¿ç¨exportãpathmungeä¹æ¯ä¸ä¸ªæ令ï¼æ¯ä¸ä¸ªç´æ¥ç¨äºæ·»å è·¯å¾å°PATHç¯å¢åéçæ令ãlinuxä¸å¦ä½å®è£ å®åçAPKå ï¼
1ãå¨linuxä¸å®è£ virtualboxï¼ç¶åå®è£ å¶å®åç³»ç»ï¼åç¥å®è£ apk2ãå°è¯å®è£ shashlinkï¼è¿ä¸ªæ¯å®åçä¸ä¸ªæ¨¡æåºï¼ä¸è¬æ¥è¯´ï¼æ¯æéxçå®åçapkæå¯ä»¥è¿è¡ï¼åªæ¯æarmçä¸è½è¿è¡ã
å¦ä½ç¼è¯armlinuxçgoï¼
Golangä¹å°±æ¯Goè¯è¨ï¼ç°å¨å·²ç»åè¡å°1.4.1çæ¬äºï¼è¯è¨ç¹æ§ä¼è¶æ§åèåGoogle强大é å±±ä»ä¹çå°±ä¸å¤è¯´äºãGolangçå®æ¹æä¾äºå¤ä¸ªå¹³å°ä¸çäºè¿å¶å®è£ å ï¼éæ¾çæ¯å¹¶é没æåå¸ARMå¹³å°çäºè¿å¶å®è£ å ãARMå¹³å°æ²¡åæ³ç´æ¥ä»å®ç½ä¸è½½äºè¿å¶å®è£ å æ¥å®è£ ï¼å¥½å¨Golangæ¯æ¯æå¤å¹³å°å¹¶ä¸å¼æºçè¯è¨ï¼å æ¤å¯ä»¥éè¿ç´æ¥å¨ARMå¹³å°ä¸ç¼è¯æºä»£ç æ¥å®è£ ãæ´ä¸ªè¿ç¨ä¸»è¦å æ¬ç¼è¯å·¥å ·é ç½®ãè·åGolangæºä»£ç ã设置Golangç¼è¯ç¯å¢åéãç¼è¯ãé ç½®Golangè¡ç¯å¢åéçæ¥éª¤ã
注ï¼æ¬æéç¨æ èæ´¾åæµè¯ï¼å 为æ èæ´¾æ¯åºäºARMå¹³å°çã
1ãç¼è¯å·¥å ·é ç½®
æ®è¯´ä¸ä¸ªçæ¬çgolangç¼è¯å·¥å ·è¦ä½¿ç¨golangèªå·±æ¥åï¼ä½ç®åè¿æ¯ä½¿ç¨Cç¼è¯å·¥å ·çãå æ¤ï¼é¦å è¦é 置好Cç¼è¯å·¥å ·ï¼
1.1å¨UbuntuæDebianå¹³å°ä¸å¯ä»¥ä½¿ç¨sudoapt-getinstallgcclibc6-devå½ä»¤å®è£ ï¼æ èæ´¾çRaspBianç³»ç»æ¯åºäºDebianä¿®æ¹çï¼æ以å¯ä»¥ä½¿ç¨è¿ç§æ¹æ³å®è£ ã
1.2å¨RedHatæCentOS6å¹³å°ä¸å¯ä»¥ä½¿ç¨sudoyuminstallgcclibc-develå½ä»¤å®è£ ã
å®è£ å®æåå¯ä»¥è¾å ¥gcc--versionå½ä»¤éªè¯æ¯å¦æåå®è£ ã
2ãè·ågolangæºä»£ç
2.1ç´æ¥ä»å®ç½ä¸è½½æºä»£ç å缩å ã
golangå®ç½æä¾golangçæºä»£ç å缩å ï¼å¯ä»¥ç´æ¥ä¸è½½ï¼ææ°ç1.4.1çæ¬æºä»£ç é¾æ¥ï¼/golang/go1.4.1.src.tar.gz
2.2使ç¨gitå·¥å ·è·åã
golang使ç¨gitçæ¬ç®¡çå·¥å ·ï¼ä¹å¯ä»¥ä½¿ç¨gitè·ågolangæºä»£ç ãæ¨è使ç¨è¿ä¸ªæ¹æ³ï¼å 为以åå¯ä»¥éæ¶è·åææ°çgolangæºä»£ç ã
2.2.1é¦å 确认ARMå¹³å°ä¸å·²ç»å®è£ äºgitå·¥å ·ï¼å¯ä»¥ä½¿ç¨git--versionå½ä»¤ç¡®è®¤ãä¸è¬linuxå¹³å°é½å®è£ äºgitï¼æ²¡æçè¯å¯ä»¥èªè¡å®è£ ï¼ä¸åå¹³å°çå®è£ æ¹æ³å¯ä»¥åèï¼/download/linux
2.2.2å éè¿ç¨golangçgitä»åºå°æ¬å°
å¨ç»ç«¯cdå°ä½ æ³è¦å®è£ golangçç®å½ï¼ç¡®ä¿è¯¥ç®å½ä¸æ²¡æå为goçç®å½ãç¶å以ä¸å½ä»¤è·å代ç ä»åºï¼
gitclone/go
大éå°åºå¯è½ä¼è·å失败ï¼å¨ä¸ç¿»å¢çæ åµä¸æè¯äºå 次é½æ²¡æåï¼åå 大家é½æçã好å¨googleå·²ç»å°golangä¹æ管å°githubä¸é¢ï¼æ以ä¹å¯ä»¥éè¿ä¸é¢å½ä»¤è·åï¼
gitclone/golang/go.git
è§ç½ç»æ åµï¼ä¸è½½å¯è½éè¦ä¸å°æ¶é´ãæ2Mç带宽è±äºå°è¿ä¸¤ä¸ªå°æ¶æä¸è½½å®ï¼è½ç¶æ´ä¸ªé¡¹ç®ä¸è¿å åå ==
ä¸è½½å®æåï¼å¯ä»¥çå°ç®å½ä¸å¤äºä¸ä¸ªgoç®å½ï¼éé¢å³ä¸ºgolangçæºä»£ç ï¼å¨ç»ç«¯ä¸æ§è¡cdgoå½ä»¤è¿å ¥è¯¥ç®å½ã
æ§è¡ä¸é¢å½ä»¤æ£åºgo1.4.1çæ¬çæºä»£ç ï¼å 为ç°å¨å·²ç»ææ°ç代ç æ交ä¸å»äºï¼ææ°ç代ç å¯è½ä¸æ¯æ稳å®çï¼
gitcheckoutgo1.4.1
è³æ¤ï¼ææ°1.4.1åè¡ççæºä»£ç è·åå®æ¯
3ã设置golangçç¼è¯ç¯å¢åé
主è¦æGOROOTãGOOSãGOARCHãGOARMå个ç¯å¢åééè¦è®¾ç½®ï¼å 解éå个ç¯å¢åéçæä¹ã
3.1GOROOT
主è¦ä»£è¡¨golangæ ç»æç®å½çè·¯å¾ï¼ä¹å°±æ¯ä¸é¢gitæ£åºçgoç®å½ãä¸è¬å¯ä»¥ä¸ç¨è®¾ç½®è¿ä¸ªç¯å¢åéï¼å 为ç¼è¯çæ¶åé»è®¤ä¼ä»¥goç®å½ä¸srcåç®å½ä¸çall.bashèæ¬è¿è¡æ¶çç¶ç®å½ä½ä¸ºGOROOTçå¼ã为äºä¿é©èµ·è§ï¼å¯ä»¥ç´æ¥è®¾ç½®ä¸ºgoç®å½çè·¯å¾ã
3.2GOOSåGOARCH
åå«ä»£è¡¨ç¼è¯çç®æ ç³»ç»åå¹³å°ï¼å¯éå¼å¦ä¸ï¼
GOOSGOARCH
darwin
darwinamd
dragonfly
dragonflyamd
freebsd
freebsdamd
freebsdarm
linux
linuxamd
linuxarm
netbsd
netbsdamd
netbsdarm
openbsd
openbsdamd
plan
plan9amd
solarisamd
windows
windowsamd
éè¦æ³¨æçæ¯è¿ä¸¤ä¸ªå¼ä»£è¡¨çæ¯ç®æ ç³»ç»åå¹³å°ï¼èä¸æ¯ç¼è¯æºä»£ç çç³»ç»åå¹³å°ãæ èæ´¾çRaspBianæ¯linuxç³»ç»ï¼æ以è¿äºGOOS设置为linuxï¼GOARCH设置为armã
3.3GOARM
表示使ç¨çæµ®ç¹è¿ç®åå¤çå¨çæ¬å·ï¼åªå¯¹armå¹³å°æç¨ï¼å¯éå¼æ5ï¼6ï¼7ãå¦ææ¯å¨ç®æ å¹³å°ä¸ç¼è¯æºä»£ç ï¼è¿ä¸ªå¼å¯ä»¥ä¸è®¾ç½®ï¼å®ä¼èªå¨å¤æéè¦ä½¿ç¨åªä¸ä¸ªçæ¬ã
æ»ç»ä¸æ¥ï¼å¨æ èæ´¾ä¸è®¾ç½®golangçç¼è¯ç¯å¢åéï¼å¯ç¼è¾$HOME/.bashrcæ件ï¼å¨æ«å°¾æ·»å ä¸é¢å 容ï¼
exportGOROOT=ä½ çgoç®å½è·¯å¾
exportGOOS=linux
exportGOARCH=arm
ç¼è¾å®åä¿åï¼æ§è¡source~/.bashrcå½ä»¤è®©ä¿®æ¹çæã
4ãç¼è¯æºä»£ç
ç¯å¢åéé ç½®å®æèªåå°±å¯ä»¥å¼å§ç¼è¯æºä»£ç ãå¨goç®å½ä¸çsrcåç®å½ä¸ï¼ä¸»è¦æall.bashåmake.bash两个èæ¬ï¼å¦å¤è¿æ两个all.batåmake.batèæ¬éç¨äºwindowå¹³å°ï¼ãç¼è¯å®é ä¸å°±æ¯æ§è¡å ¶ä¸ä¸ä¸ªèæ¬ï¼ä¸¤è çåºå«å¨äºall.bashå¨ç¼è¯å®æåè¿ä¼æ§è¡ä¸äºæµè¯å¥ä»¶ãå¦æå¸æåªç¼è¯ä¸æµè¯ï¼å¯ä»¥è¿è¡make.bashèæ¬ã使ç¨cdå½ä»¤è¿å ¥goä¸srcç®å½ï¼æ§è¡./all.bashæè ./make.bashå½ä»¤å³å¯å¼å§ç¼è¯ãç±äºç¡¬ä»¶æ åµä¸åï¼ç¼è¯èè´¹çæ¶é´ä¸åãå¨æçBåæ èæ´¾ç¼è¯è¿ç¨è±è´¹äºå°è¿å个å°æ¶ï¼ç¼è¯å®æåæ§è¡çæµè¯å¥ä»¶åè±è´¹äºå·®ä¸å¤ä¸ä¸ªå°æ¶ï¼æ»å ±è±è´¹äºä¸ä¸ªåå°æ¶å·¦å³ã
5ãé ç½®golangè¿è¡ç¯å¢åé
ç¼è¯å®æåï¼goç®å½ä¸ä¼çæbinç®å½ï¼éé¢å°±æ¯goçè¿è¡èæ¬ã为äºä»¥å使ç¨æ¹æ³ï¼å¯ä»¥å°è¿ä¸ªbinè·¯å¾æ·»å å°PATHç¯å¢åéä¸ãåæ ·ç¼è¾~/.bashrcæ件ï¼å 为åé¢è®¾ç½®è¿GOROOTç¯å¢åéæågoç®å½äºï¼æ以åªéè¦å¨æ«å°¾å ä¸
exportPATH=$PATH:$GOROOT/bin
ä¿åååæ ·æ§è¡source~/.bashrcå½ä»¤è®©ç¯å¢åéçæã
è³æ¤ï¼golangæºä»£ç ç¼è¯å®è£ æåãæ§è¡goversionåºè¯¥å°±è½çå°å½ågolangççæ¬ä¿¡æ¯ï¼è¡¨ç¤ºç¼è¯å®è£ æåã
linuxä¸ARMå¹³å°ç¼è¯ç¼åçå®æç¨åºå¦ä½å¨windowsç¯å¢ä¸è¿è¡ï¼
ç´æ¥å¨windowä¸è¿è¡ä¸äºãåªè½å¨windowä¸å®è£ èææºï¼åå®è£ linuxç³»ç»ï¼å¨èææºä¸çlinuxégccç¼è¯ä½ çç¨åº.
请é®å¦ä¹ ARMåµå ¥å¼å¼ååºè¯¥åå¤äºä»ä¹å¼åå·¥å ·åè¦æ±ï¼
æ请ã
è¿ä¸ªé®é¢ç¸ä¿¡æ¯å°æ°ææåµå ¥å¼åå¦è çé¾é¢ï¼
ä¸é¢è¯¾å 容æ¯åµå ¥å¼å¦ä¹ å¿ å¦çï¼Cè¯è¨;C++;æä½ç³»ç»;计ç®æºç»æåç;linuxç¼ç¨;åçæº;arm;硬件ç¼ç¨è¯è¨(FPGA);模æçµè·¯æ°åçµè·¯ã
1ãcc++è¯è¨ï¼è¿æ¯è®¡ç®æºè¡ä¸çå¿ ä¿®è¯¾ï¼å¿ é¡»æ¾æå®å®å¦å¥½ï¼å¯ä»¥å®è£ turbocç¼è¯å¨ä¸ºå¼åç¯å¢ï¼èç³»Cè¯è¨ç¼ç¨;å®è£ vc++6.0å¦ä¹ C++ç¼ç¨ã
2ãæä½ç³»ç»ï¼å å¨çµèä¸å®è£ ä¸ä¸ªvmwareworkstationï¼ç¶åå¨vmwareworkstationéå®è£ ä¸ä¸ªlinux(redhatä¼ä¸ç)èææºãå¦ä¹ ä¸ä¸æä½ç³»ç»çåºæ¬åçï¼çælinuxç¯å¢ä¸çå¼åç¯å¢ï¼ç¶åä½ å°±å¯ä»¥ç §çãèªå·±å¨æåæä½ç³»ç»ãå个æä½ç³»ç»è¯è¯ã
3ã计ç®æºç»æåçï¼çæ计ç®æºçåºæ¬åçï¼ççä¸ä¸ªè®¡ç®æºçåºæ¬ç»æå软件å¨éé¢æ¯å¦ä½è·çã
4ããunix/linuxç¼ç¨å®è·µæç¨ãå¯ä»¥è¯´æ¯linuxç¼ç¨çå¿ ä¿®è¯¾ï¼å¾ä¸éçä¸æ¬ä¹¦ï¼åå¦åµå ¥å¼çæåå¯ä»¥ççã
5ãåçæºï¼å ¶å®å°±æ¯ä¸å°çµèï¼åç°å¨ç汽车æ§å¶ãledæ§å¶ãå±å¹äº®å ç¨åº¦æ§å¶ï¼å®é½å¯ä»¥å®ç°ï¼èªå·±ä¹°åå¼åæ¿å¼ä¸ä¸ï¼ä½ è½å¦å°å¾å¤çå«äººå¦ä¸å°çã
6ãarmï¼ç°å¨æµè¡çå¾®æºï¼è¯´ç½äºå°±æ¯ä½çåçæºï¼è¿å¯ä»¥è·æä½ç³»ç»å¦ï¼èªå·±æ³åæ³ç§»æ¤ä¸ä¸ªæä½ç³»ç»ä¸å»å§
7ã硬件ç¼ç¨è¯è¨(FPGA)ï¼è¯çå°åºæ¯æä¹åæçï¼å¦ä¹ è¿é¨è¯¾ï¼ä½ å°±ç¥éäº
8ã模æçµè·¯æ°åçµè·¯ï¼ç¡¬ä»¶çåºç¡ï¼å¦æå¯ä»¥çè¯ï¼å¦ä¹ ä¸protelï¼èªå·±å个硬件pcbæ¿è¯è¯ã
计ç®æºè¿è¡é½æ¯ååäºå®è·µç课ç¨ï¼æ以è¦æ³¨éå¨æè½åï¼
å¦ä¹ åµå ¥å¼è¿åºæ¬è¯¾ç¨çæ¶åï¼ä½ å¯ä»¥æç §è¿æ ·ç顺åºæ¥å¦ä¹ ï¼
1ï¼Cè¯è¨ã计ç®æºç»æåçã模æçµè·¯æ°åçµè·¯
2ï¼æ±ç¼è¯è¨ãåçæºãæä½ç³»ç»ãC++
3ï¼ç¡¬ä»¶ç¼ç¨è¯è¨ãarm
åµå ¥å¼å¼å大æµåå个æ¹åï¼ç¡¬ä»¶ã驱å¨ãå æ ¸ãåºç¨ï¼å¦ææ¯å¸æååµå ¥å¼è½¯ä»¶æ¹ååå±çè¯ï¼ç®å常è§çæ¯
åµå ¥å¼Linux+ARMæ¹åï¼å ³äºè¿ä¸ªæ¹åï¼å¤§æ¦å3个é¶æ®µï¼
1ãåµå ¥å¼linuxä¸å±åºç¨ï¼å æ¬QTçGUIå¼å
2ãåµå ¥å¼linuxç³»ç»å¼å
3ãåµå ¥å¼linux驱å¨å¼ååµå ¥å¼ç®å主è¦é¢åçå 个æä½ç³»ç»æ¯ï¼LINUXï¼WINCEãVxWorksççLinuxæ¯å¼æºå è´¹çï¼èä¸å ¶æºä»£ç æ¯å¼æ¾çï¼æ´å éåæ们å¦ä¹ åµå ¥å¼ã
èªå¦çè¯ä½ å¯ä»¥å°è¯ä»¥ä¸è·¯çº¿ï¼
(1)Cè¯è¨æ¯ææç¼ç¨è¯è¨ä¸ç强è ï¼åçæºãDSPã类似ARMçç§ç§è¯ççç¼ç¨é½å¯ä»¥ç¨Cè¯è¨æå®)ï¼å æ¤å¿ é¡»é常çç»çææ¡ãæ¨è书ç±ï¼è°æµ©å¼ºçå¾ä¸éï¼ãTheCProgrammingLanguageãè¿æ¬ç»å ¸çæææ¯èå¤åçï¼ä¹æä¸è¯çæ¬ã
(2)æä½ç³»ç»åçï¼æ¯å¿ éçï¼å¦æä½ æ¯è®¡ç®æºä¸ä¸æ¯ä¸é£ä¹å°±æ æè°äºï¼å¦ææ¯é计ç®æºä¸ä¸çå°±å¿ é¡»æ¾ä¸æ¬æ¯è¾æµ æ¾ç计ç®æºåç书ç±çä¸çï¼æå¥å«âè¿ç¨ââ线ç¨ââç³»ç»è°åº¦âççåºæ¬é®é¢ææ¸ æ¥ã
(3)Linuxæä½ç³»ç»å°±æ¯ç¨Cè¯è¨ç¼åçï¼æä»¥ä½ ä¹åºè¯¥å å¦ä¹ ä¸Linuxæ¹é¢çç¼ç¨ï¼åªæä½ ä¼åºç¨äºï¼æè½è¿ä¸æ¥å»äºè§£å ¶å æ ¸çç²¾é«ãæ¨è书ç±ï¼ãUNIXç¯å¢é«çº§ç¼ç¨ã(第2ç)
(4)äºè§£ARMçæ¶æï¼åçï¼ä»¥åå ¶æ±ç¼æ令ï¼æ们å¨åµå ¥å¼å¼åä¸ï¼ä¸è¬å¾å°å»åæ±ç¼ï¼ä½æ¯èµ·ç çè¦æ±æ¯è½å¤çæarmæ±ç¼ã
(5)ç³»ç»ç§»æ¤çæ¶åï¼å°±éè¦ä½ ä»ä¸å±çbootloaderå¼å§ï¼ç¶åå æ ¸ç§»æ¤ï¼æ件系ç»ç§»æ¤çãè移æ¤è¿é¨å对硬件çä¾èµæ¯é常大çï¼å ¶é ç½®æ¥éª¤ä¹ç¸å¯¹å¤æï¼ä¹æ²¡æ太å¤è¯¦ç»èµæã
(6)驱å¨å¼ålinux驱å¨ç¨åºè®¾è®¡æ¢æ¯ä¸ªæå¯ææææ§çé¢åï¼åæ¯ä¸ä¸ªå大精深çå 容ãlinux驱å¨ç¨åºè®¾è®¡æ¬è´¨æ¯å±äºlinuxå æ ¸ç¼ç¨èç´çï¼å èæ¯å¯¹linuxå æ ¸åå æ ¸ç¼ç¨æ¯æè¦æ±çãå¨å¦ä¹ åä½ è¦æ³äºè§£linuxå æ ¸çç»æï¼å 为æ¯ä¸é¨åè¦è¯¦ç»ç 究çè¯è¶³å¤å¯ä»¥æ©å±æä¸æ¬å书ã
ç»å¤§å®¶æä¸ä¸ªåµå ¥å¼å¼åå¦ä¹ 大æ¹é¢çå¦ä¹ æ¡æ¶æåºæ¥äº
ãæåå¢ç¥å¤§å®¶è½å¤å¨å¦ä¹ çè·¯ä¸é©¬å°æåã
å¦ä½ç¼è¯arm linuxçgo
Golangä¹å°±æ¯Goè¯è¨ï¼ç°å¨å·²ç»åè¡å°1.4.1çæ¬äºï¼è¯è¨ç¹æ§ä¼è¶æ§åèåGoogle强大é å±±ä»ä¹çå°±ä¸å¤è¯´äºãGolangçå®æ¹æä¾äºå¤ä¸ªå¹³å°ä¸çäºè¿å¶å®è£ å ï¼éæ¾çæ¯å¹¶é没æåå¸ARMå¹³å°çäºè¿å¶å®è£ å ãARMå¹³å°æ²¡åæ³ç´æ¥ä»å®ç½ä¸è½½äºè¿å¶å®è£ å æ¥å®è£ ï¼å¥½å¨Golangæ¯æ¯æå¤å¹³å°å¹¶ä¸å¼æºçè¯è¨ï¼å æ¤å¯ä»¥éè¿ç´æ¥å¨ARMå¹³å°ä¸ç¼è¯æºä»£ç æ¥å®è£ ãæ´ä¸ªè¿ç¨ä¸»è¦å æ¬ç¼è¯å·¥å ·é ç½®ãè·åGolangæºä»£ç ã设置Golangç¼è¯ç¯å¢åéãç¼è¯ãé ç½®Golangè¡ç¯å¢åéçæ¥éª¤ã
注ï¼æ¬æéç¨æ èæ´¾åæµè¯ï¼å 为æ èæ´¾æ¯åºäºARMå¹³å°çã
1ãç¼è¯å·¥å ·é ç½®
æ®è¯´ä¸ä¸ªçæ¬çgolangç¼è¯å·¥å ·è¦ä½¿ç¨golangèªå·±æ¥åï¼ä½ç®åè¿æ¯ä½¿ç¨Cç¼è¯å·¥å ·çãå æ¤ï¼é¦å è¦é 置好Cç¼è¯å·¥å ·ï¼
1.1 å¨UbuntuæDebianå¹³å°ä¸å¯ä»¥ä½¿ç¨sudo apt-get install gcc libc6-devå½ä»¤å®è£ ï¼æ èæ´¾çRaspBianç³»ç»æ¯åºäºDebianä¿®æ¹çï¼æ以å¯ä»¥ä½¿ç¨è¿ç§æ¹æ³å®è£ ã
1.2 å¨RedHatæCentOS 6å¹³å°ä¸å¯ä»¥ä½¿ç¨sudo yum install gcc libc-develå½ä»¤å®è£ ã
å®è£ å®æåå¯ä»¥è¾å ¥ gcc --versionå½ä»¤éªè¯æ¯å¦æåå®è£ ã
2ãè·ågolangæºä»£ç
2.1 ç´æ¥ä»å®ç½ä¸è½½æºä»£ç å缩å ã
golangå®ç½æä¾golangçæºä»£ç å缩å ï¼å¯ä»¥ç´æ¥ä¸è½½ï¼ææ°ç1.4.1çæ¬æºä»£ç é¾æ¥ï¼/golang/go1.4.1.src.tar.gz
2.2 使ç¨gitå·¥å ·è·åã
golang使ç¨gitçæ¬ç®¡çå·¥å ·ï¼ä¹å¯ä»¥ä½¿ç¨gitè·ågolangæºä»£ç ãæ¨è使ç¨è¿ä¸ªæ¹æ³ï¼å 为以åå¯ä»¥éæ¶è·åææ°çgolangæºä»£ç ã
2.2.1 é¦å 确认ARMå¹³å°ä¸å·²ç»å®è£ äºgitå·¥å ·ï¼å¯ä»¥ä½¿ç¨git --versionå½ä»¤ç¡®è®¤ãä¸è¬linuxå¹³å°é½å®è£ äºgitï¼æ²¡æçè¯å¯ä»¥èªè¡å®è£ ï¼ä¸åå¹³å°çå®è£ æ¹æ³å¯ä»¥åèï¼/download/linux
2.2.2 å éè¿ç¨golangçgitä»åºå°æ¬å°
å¨ç»ç«¯cdå°ä½ æ³è¦å®è£ golangçç®å½ï¼ç¡®ä¿è¯¥ç®å½ä¸æ²¡æå为goçç®å½ãç¶å以ä¸å½ä»¤è·å代ç ä»åºï¼
git clone /go
大éå°åºå¯è½ä¼è·å失败ï¼å¨ä¸ç¿»å¢çæ åµä¸æè¯äºå 次é½æ²¡æåï¼åå 大家é½æçã好å¨googleå·²ç»å°golangä¹æ管å°githubä¸é¢ï¼æ以ä¹å¯ä»¥éè¿ä¸é¢å½ä»¤è·åï¼
git clone /golang/go.git
è§ç½ç»æ åµï¼ä¸è½½å¯è½éè¦ä¸å°æ¶é´ãæ2Mç带宽è±äºå°è¿ä¸¤ä¸ªå°æ¶æä¸è½½å®ï¼è½ç¶æ´ä¸ªé¡¹ç®ä¸è¿å åå = =
ä¸è½½å®æåï¼å¯ä»¥çå°ç®å½ä¸å¤äºä¸ä¸ªgoç®å½ï¼éé¢å³ä¸ºgolangçæºä»£ç ï¼å¨ç»ç«¯ä¸æ§è¡cd goå½ä»¤è¿å ¥è¯¥ç®å½ã
æ§è¡ä¸é¢å½ä»¤æ£åºgo1.4.1çæ¬çæºä»£ç ï¼å 为ç°å¨å·²ç»ææ°ç代ç æ交ä¸å»äºï¼ææ°ç代ç å¯è½ä¸æ¯æ稳å®çï¼
git checkout go1.4.1
è³æ¤ï¼ææ°1.4.1åè¡ççæºä»£ç è·åå®æ¯
3ã设置golangçç¼è¯ç¯å¢åé
主è¦æGOROOTãGOOSãGOARCHãGOARMå个ç¯å¢åééè¦è®¾ç½®ï¼å 解éå个ç¯å¢åéçæä¹ã
3.1 GOROOT
主è¦ä»£è¡¨golangæ ç»æç®å½çè·¯å¾ï¼ä¹å°±æ¯ä¸é¢gitæ£åºçgoç®å½ãä¸è¬å¯ä»¥ä¸ç¨è®¾ç½®è¿ä¸ªç¯å¢åéï¼å 为ç¼è¯çæ¶åé»è®¤ä¼ä»¥goç®å½ä¸srcåç®å½ä¸çall.bashèæ¬è¿è¡æ¶çç¶ç®å½ä½ä¸ºGOROOTçå¼ã为äºä¿é©èµ·è§ï¼å¯ä»¥ç´æ¥è®¾ç½®ä¸ºgoç®å½çè·¯å¾ã
3.2 GOOSåGOARCH
åå«ä»£è¡¨ç¼è¯çç®æ ç³»ç»åå¹³å°ï¼å¯éå¼å¦ä¸ï¼
GOOS GOARCH
darwin
darwin amd
dragonfly
dragonfly amd
freebsd
freebsd amd
freebsd arm
linux
linux amd
linux arm
netbsd
netbsd amd
netbsd arm
openbsd
openbsd amd
plan9
plan9 amd
solaris amd
windows
windows amd
éè¦æ³¨æçæ¯è¿ä¸¤ä¸ªå¼ä»£è¡¨çæ¯ç®æ ç³»ç»åå¹³å°ï¼èä¸æ¯ç¼è¯æºä»£ç çç³»ç»åå¹³å°ãæ èæ´¾çRaspBianæ¯linuxç³»ç»ï¼æ以è¿äºGOOS设置为linuxï¼GOARCH设置为armã
3.3 GOARM
表示使ç¨çæµ®ç¹è¿ç®åå¤çå¨çæ¬å·ï¼åªå¯¹armå¹³å°æç¨ï¼å¯éå¼æ5ï¼6ï¼7ãå¦ææ¯å¨ç®æ å¹³å°ä¸ç¼è¯æºä»£ç ï¼è¿ä¸ªå¼å¯ä»¥ä¸è®¾ç½®ï¼å®ä¼èªå¨å¤æéè¦ä½¿ç¨åªä¸ä¸ªçæ¬ã
æ»ç»ä¸æ¥ï¼å¨æ èæ´¾ä¸è®¾ç½®golangçç¼è¯ç¯å¢åéï¼å¯ç¼è¾$HOME/.bashrcæ件ï¼å¨æ«å°¾æ·»å ä¸é¢å 容ï¼
export GOROOT=ä½ çgoç®å½è·¯å¾
export GOOS=linux
export GOARCH=arm
ç¼è¾å®åä¿åï¼æ§è¡source ~/.bashrcå½ä»¤è®©ä¿®æ¹çæã
4ãç¼è¯æºä»£ç
ç¯å¢åéé ç½®å®æèªåå°±å¯ä»¥å¼å§ç¼è¯æºä»£ç ãå¨goç®å½ä¸çsrcåç®å½ä¸ï¼ä¸»è¦æall.bashåmake.bash两个èæ¬ï¼å¦å¤è¿æ两个all.batåmake.batèæ¬éç¨äºwindowå¹³å°ï¼ãç¼è¯å®é ä¸å°±æ¯æ§è¡å ¶ä¸ä¸ä¸ªèæ¬ï¼ä¸¤è çåºå«å¨äºall.bashå¨ç¼è¯å®æåè¿ä¼æ§è¡ä¸äºæµè¯å¥ä»¶ãå¦æå¸æåªç¼è¯ä¸æµè¯ï¼å¯ä»¥è¿è¡make.bashèæ¬ã使ç¨cdå½ä»¤è¿å ¥goä¸srcç®å½ï¼æ§è¡./all.bashæè ./make.bashå½ä»¤å³å¯å¼å§ç¼è¯ãç±äºç¡¬ä»¶æ åµä¸åï¼ç¼è¯èè´¹çæ¶é´ä¸åãå¨æçBåæ èæ´¾ç¼è¯è¿ç¨è±è´¹äºå°è¿å个å°æ¶ï¼ç¼è¯å®æåæ§è¡çæµè¯å¥ä»¶åè±è´¹äºå·®ä¸å¤ä¸ä¸ªå°æ¶ï¼æ»å ±è±è´¹äºä¸ä¸ªåå°æ¶å·¦å³ã
5ãé ç½®golangè¿è¡ç¯å¢åé
ç¼è¯å®æåï¼goç®å½ä¸ä¼çæbinç®å½ï¼éé¢å°±æ¯goçè¿è¡èæ¬ã为äºä»¥å使ç¨æ¹æ³ï¼å¯ä»¥å°è¿ä¸ªbinè·¯å¾æ·»å å°PATHç¯å¢åéä¸ãåæ ·ç¼è¾~/.bashrcæ件ï¼å 为åé¢è®¾ç½®è¿GOROOTç¯å¢åéæågoç®å½äºï¼æ以åªéè¦å¨æ«å°¾å ä¸
export PATH=$PATH:$GOROOT/bin
ä¿åååæ ·æ§è¡source ~/.bashrcå½ä»¤è®©ç¯å¢åéçæã
è³æ¤ï¼golangæºä»£ç ç¼è¯å®è£ æåãæ§è¡go versionåºè¯¥å°±è½çå°å½ågolangççæ¬ä¿¡æ¯ï¼è¡¨ç¤ºç¼è¯å®è£ æåã
2024-12-28 23:56
2024-12-28 23:45
2024-12-28 23:02
2024-12-28 22:54
2024-12-28 21:43