ubuntu

Ubuntu上Golang编译动态链接库方法

小樊
38
2025-12-06 14:24:35
栏目: 编程语言

在Ubuntu上使用Golang编译动态链接库(.so文件)需要遵循以下步骤:

  1. 首先,确保已经安装了Go。如果没有,请访问Go官方网站下载并安装适用于Ubuntu的Go版本。

  2. 创建一个新的Go文件,例如hello.go,并编写你的代码。这里是一个简单的示例:

package main

import "C"

import (
	"fmt"
)

//export Hello
func Hello() {
	fmt.Println("Hello from Go!")
}

func main() {}

在这个示例中,我们定义了一个名为Hello的函数,它将被导出到动态链接库中。//export注释是必需的,以便Go编译器知道哪些函数应该被导出。

  1. 使用以下命令编译Go代码为动态链接库:
go build -o libhello.so -buildmode=c-shared hello.go

这将生成一个名为libhello.so的动态链接库文件。

  1. 现在,你可以在其他程序中使用这个动态链接库。创建一个新的Go文件,例如main.go,并编写以下代码:
package main

/*
#cgo LDFLAGS: -L. -lhello
#include <stdlib.h>

typedef void (*hello_func)();

int main() {
	hello_func hello = (hello_func) dlsym(RTLD_DEFAULT, "Hello");
	if (hello == NULL) {
		return 1;
	}
	hello();
	return 0;
}
*/
import "C"

func main() {}

在这个示例中,我们使用cgo指令来链接libhello.so库,并调用Hello函数。

  1. 使用以下命令编译并运行程序:
go build -o main main.go
LD_LIBRARY_PATH=. ./main

这将输出:

Hello from Go!

现在你已经成功地在Ubuntu上使用Golang编译了一个动态链接库,并在其他程序中使用了它。

0
看了该问题的人还看了