使用 Golang 编译 Linux 可运行文件
Golang(或 Go)是一种开源编程语言,因其简单、高效、并发编程支持而备受欢迎。本文将详细介绍如何使用 Golang 编译生成可以在 Linux 上运行的可执行文件。
一、安装 Golang
1.1 下载 Golang
从 Golang 官方网站下载适合你操作系统的安装包:Golang 下载页面
1.2 安装 Golang
在 Ubuntu 上安装:
sudo apt update
sudo apt install -y golang
在 CentOS 上安装:
sudo yum update
sudo yum install -y golang
验证安装:
go version
输出类似于:
go version go1.16.3 linux/amd64
二、编写 Golang 程序
2.1 创建工作目录
mkdir -p ~/go/src/hello
cd ~/go/src/hello
2.2 编写示例程序
创建 main.go
文件并添加以下内容:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
三、编译 Golang 程序
3.1 本地编译
如果你在 Linux 环境下开发并编译,可以直接使用 go build
命令:
go build -o hello main.go
这将在当前目录生成一个名为 hello
的可执行文件。
3.2 交叉编译
如果你在非 Linux 环境(如 Windows 或 macOS)下开发,需要编译生成 Linux 可执行文件,可以使用交叉编译功能。
GOOS=linux GOARCH=amd64 go build -o hello main.go
其中:
GOOS=linux
:目标操作系统为 LinuxGOARCH=amd64
:目标架构为 64 位
3.3 编译选项
-o <filename>
:指定输出文件的名称。-v
:输出详细的编译信息。-a
:强制重新编译所有包。-ldflags
:设置编译时的链接器参数。
示例:
go build -o hello -v -ldflags "-s -w" main.go
参数解释:
-s
:去掉符号表信息。-w
:去掉 DWARF 调试信息。
四、运行编译后的可执行文件
4.1 在本地运行
./hello
输出:
Hello, World!
4.2 在目标 Linux 服务器上运行
- 使用
scp
或rsync
将可执行文件传输到目标 Linux 服务器:
scp hello user@linux_server:/path/to/directory
- 在目标服务器上运行可执行文件:
ssh user@linux_server
cd /path/to/directory
chmod +x hello
./hello
五、常见问题及解决方案
5.1 编译过程中出现权限问题
确保你有权限在目标目录中创建和修改文件。使用 sudo
或切换到具有适当权限的用户。
5.2 交叉编译后无法运行
确保交叉编译的目标架构和操作系统设置正确。使用 GOOS
和 GOARCH
变量指定正确的目标平台。
5.3 运行时报错缺少依赖库
Golang 编译的可执行文件通常是静态链接的,不依赖外部库。如果出现缺少依赖库的错误,检查是否使用了需要动态链接的 C 库。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!