linux
如何编译arm linux的go?
一、如何编译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版本源代码链接:https://storage.googleapis.com/golang/go1.4.1.src.tar.gz
2.2 使用git工具获取。
golang使用git版本管理工具,也可以使用git获取golang源代码。推荐使用这个方法,因为以后可以随时获取最新的golang源代码。
2.2.1 首先确认ARM平台上已经安装了git工具,可以使用git --version命令确认。一般linux平台都安装了git,没有的话可以自行安装,不同平台的安装方法可以参考:http://git-scm.com/download/linux
2.2.2 克隆远程golang的git仓库到本地
在终端cd到你想要安装golang的目录,确保该目录下没有名为go的目录。然后以下命令获取代码仓库:
git clone https://go.googlesource.com/go
大陆地区可能会获取失败,在不翻墙的情况下我试了几次都没成功,原因大家都懂的。好在google已经将golang也托管到github上面,所以也可以通过下面命令获取:
git clone https://github.com/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 386
darwin amd64
dragonfly 386
dragonfly amd64
freebsd 386
freebsd amd64
freebsd arm
linux 386
linux amd64
linux arm
netbsd 386
netbsd amd64
netbsd arm
openbsd 386
openbsd amd64
plan9 386
plan9 amd64
solaris amd64
windows 386
windows amd64
需要注意的是这两个值代表的是目标系统和平台,而不是编译源代码的系统和平台。树莓派的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的版本信息,表示编译安装成功。
二、Go 语言程序如何编译?
Go语言程序的编译过程可以分为三个阶段:
- 词法分析和语法分析(Parsing):将源代码分成token并构建AST(抽象语法树)Go语言源代码文件(例如 main.go)会被编译器翻译成中间代码(IR),即.go -> .o。编译器首先会将源代码分成token,并将它们组装成语法树或抽象语法树(AST)。这些树将被用于进一步的语义分析和编译。
- 语义分析和中间代码生成(Compile):将AST转换为中间代码(IR)Go语言的编译器会进行语义分析器和中间代码生成,它会对AST进行检查,以确保代码的类型安全、变量的定义和使用、函数的调用等等都是正确的。然后,编译器会将AST转换为中间代码,并将其编译为汇编代码或机器码,即.o -> .s 或 .o -> .exe/.dll/.so 等。
- 链接(Linking):合并独立的中间代码(IR)最终阶段是链接,它会将这些中间代码合并成一个可执行文件或库文件。具体地说,链接器会检查是否有未解决的全局变量或函数,如果有,就会将它们与其他目标文件中的对象合并成一个单独的可执行文件,即 .exe 或 .dll,以及 .a 或 .so。
在上述过程中,Go语言程序涉及的文件一般包括源代码文件和编译生成的目标代码文件,比如:
- .go 文件:Go语言的源代码文件;
- .o 文件:编译器生成的中间代码,也称为对象文件;
- .exe、.dll 和 .so 文件:链接器生成的可执行文件或库文件。
还有一些其他类型的文件,如档案(archive)文件的扩展名为 .a,这是一种归档文件,可用于在创建程序库时合并多个对象文件。在Go语言中,还可以通过交叉编译产生其他操作系统和架构的目标文件,如 Windows 上的 ELF 文件、Linux 上的 PE(Portable Executable)文件等。
三、LINUX内核编译步骤?
编译及安装简要步骤: 编辑Makefile版本信息 定义内核特性,生成配置文件.config,用于编译:make xconfig 编译内核:make 安装内核:make install 安装模块:make modules_install 具体步骤如下: 内核配置 先定义内核需要什么特性,并进行配置。内核构建系统(The kernel build system)远不是简单用来构建整个内核和模块,想了解更多的高级内核构建选项,你可以查看 Documentation/kbuild 目录内的内核文档。
可用的配置命令和方式: make menuconfig 命令:make menuconfig 编译内核 编译和安装内核 编译步骤: $ cd /usr/src/linux2.6 $ make 安装步骤 (logged as $ make install $ make modules_install 提升编译速度 多花一些时间在内核配置上,并且只编译那些你硬件需要的模块。
这样可以把编译时间缩短为原来的1/30,并且节省数百MB的空间。
另外,你还可以并行编译多个文件: $ make -j
四、linux交叉编译是什么?
编译器是将源代码转换为可执行代码的程序。像所有程序一样,编译器运行在特定类型的计算机上,输出的新程序也运行在特定类型的计算机上。
运行编译器的计算机称为主机,运行新程序的计算机称为目标。当主机和目标是同一类型的机器时,编译器是本机编译器。当宿主和目标不同时,编译器是 交叉编译器。
五、如何编译linux源代码?
1、安装编码源码的编译工具,一般是需要安装gcc yum install gcc
2、把源码解压 tar zxvf uname.tar.gz
3、进入解压的目录执行 ./configure make make install 完成编译安装
六、linux怎么make编译lua?
方法/步骤Linux系统的版本命令:cat/proc/version下载Lua源码包命令:wgethttp://www.lua.org/ftp/lua-5.3.2.tar.gz解压下载的源码包lua-5.3.2.tar.gz命令:tar-xzvflua-5.3.2.tar.gz安装编译Lua所需的依赖包命令:yum-yinstallreadline-devel编译并安装Lua命令:makelinuxtest测试Lua源码编译生成的lua是否可用命令:lua测试Lua源码编译生成的luac是否可用命令:luac
七、linux下怎样编译opencascade?
以下是在 Linux 上编译 OpenCASCADE 的步骤:
1、下载 OpenCASCADE 的源代码包,并解压到一个目录中。
2、打开终端,进入源代码目录。
3、创建一个新的目录用于构建 OpenCASCADE。
4、在终端中执行以下命令,进入新建的构建目录:
cd build
5、在构建目录中执行以下命令,配置 OpenCASCADE 的编译选项:
cmake ../path/to/opencascade/sources
其中,../path/to/opencascade/sources 是指 OpenCASCADE 源代码所在的路径。
6、执行以下命令,编译 OpenCASCADE:
make -j4
其中,-j4 参数表示使用 4 个线程并行编译,可以根据实际情况进行调整。
7、执行以下命令,安装编译好的 OpenCASCADE 库文件:
sudo make install
8、等待编译和安装完成后,即可在系统中使用 OpenCASCADE 库文件。
请注意,OpenCASCADE 的编译过程可能会因操作系统版本、编译器版本、依赖库版本等因素而有所差异。因此,在编译前,请先查看 OpenCASCADE 的文档或官方网站,了解相关的系统和软件要求。
八、go是编译型语言吗?
go是编译型语言。
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
Go的语法接近C语言,但对于变量的声明有所不同。Go支持垃圾回收功能。Go的并行模型是以东尼·霍尔的通信顺序进程(CSP)为基础,它也具有Pi运算的特征,比如通道传输。
九、centos编译linux内核
make menuconfig十、centos linux内核编译
CentOS Linux内核编译指南
在CentOS Linux操作系统中进行内核编译是一项常见的任务,特别是在需要优化系统性能或者添加定制功能时。本文将为您提供一份详细的CentOS Linux内核编译指南,帮助您顺利完成这一过程。
为什么要编译CentOS Linux内核?
CentOS Linux内核编译的主要目的之一是为了定制和优化系统内核以满足特定需求。通过编译内核,您可以剔除不需要的模块,集成新的功能和驱动程序,或者调整内核参数以提升系统性能和稳定性。另外,通过编译内核也可以学习更多关于操作系统内部工作原理和机制的知识,对系统管理和开发都具有重要意义。
准备工作
在开始编译CentOS Linux内核之前,您需要做好以下准备工作:
- 确保系统处于最新状态,运行
yum update
命令更新系统软件包。 - 安装编译内核所需的工具和依赖项,包括
gcc
、make
、flex
等。 - 下载最新的Linux内核源代码包,可以从官方内核网站获取或通过Git仓库克隆。
编译内核步骤
接下来,我们将介绍在CentOS Linux系统上编译内核的详细步骤:
1. 解压内核源代码
首先,将下载的内核源代码包解压到一个工作目录中,可以使用以下命令:
tar -xvf linux-x.xx.tar.gz
2. 配置内核选项
进入源代码目录,运行以下命令配置内核选项:
make menuconfig
在配置界面中可以对内核各种选项进行调整和定制,包括核心功能、设备驱动、文件系统支持等。根据需求进行相应配置,并保存退出。
3. 编译内核
完成配置后,运行以下命令开始编译内核:
make
编译过程可能需要一段时间,取决于系统性能和内核源代码大小。在编译完成后,您将在源代码目录中得到编译好的内核镜像文件。
4. 安装内核
将编译好的内核安装到系统中,运行以下命令:
make install
此命令将把编译好的内核文件复制到系统启动目录,并更新引导配置文件。安装完成后,您可以重启系统并选择新编译的内核启动。
注意事项和常见问题
在编译CentOS Linux内核过程中,可能会遇到一些常见问题,以下是一些注意事项和解决方法:
- 确保系统中已安装所需的编译工具和依赖项,否则会导致编译失败。
- 在配置内核选项时,注意选择适合系统硬件和需求的选项,避免不必要的模块导致内核臃肿。
- 在编译过程中,可能会因为系统资源不足或者编译选项配置错误而失败,需仔细检查错误信息并调整相应配置。
总结
通过本文的指南,您应该已经了解了在CentOS Linux系统上编译内核的基本步骤和注意事项。内核编译是一项复杂但有趣的任务,通过不断实践和学习,您将能够更好地掌握Linux系统管理和开发的技能。祝您编译顺利,享受系统定制的乐趣!
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...