在Ubuntu上使用Golang编译动态链接库(.so文件)需要遵循以下步骤:
首先,确保已经安装了Go。如果没有,请访问Go官方网站下载并安装适用于Ubuntu的Go版本。
创建一个新的Go文件,例如hello.go,并编写你的代码。这里是一个简单的示例:
package main
import "C"
import (
"fmt"
)
//export Hello
func Hello() {
fmt.Println("Hello from Go!")
}
func main() {}
在这个示例中,我们定义了一个名为Hello的函数,它将被导出到动态链接库中。//export注释是必需的,以便Go编译器知道哪些函数应该被导出。
go build -o libhello.so -buildmode=c-shared hello.go
这将生成一个名为libhello.so的动态链接库文件。
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函数。
go build -o main main.go
LD_LIBRARY_PATH=. ./main
这将输出:
Hello from Go!
现在你已经成功地在Ubuntu上使用Golang编译了一个动态链接库,并在其他程序中使用了它。