最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Ubuntu下Golang编译生成动态库的方法
时间:2026-06-13 10:36:48 编辑:袖梨 来源:一聚教程网
在Ubuntu下,使用Golang编译生成动态库(.so文件)需要遵循以下步骤:

- 创建一个新的Go文件,例如
hello.go,并编写你的Go代码。在这个例子中,我们将创建一个简单的函数,用于返回一个字符串:
package mainimport "C"//export Hellofunc Hello() string {return "Hello from Go!"}func main() {}注意,我们使用了//export注释来导出Hello函数,使其可以在C代码中调用。同时,我们导入了C包,这是Go与C语言交互所必需的。
- 使用
go build命令编译Go代码为动态库。在终端中,导航到包含hello.go文件的目录,然后运行以下命令:
go build -o libhello.so -buildmode=c-shared hello.go这将生成一个名为libhello.so的动态库文件。
- 现在你可以在其他C程序中使用这个动态库。创建一个新的C文件(例如
main.c),并编写以下代码来调用Hello函数:
#include <stdio.h>#include <dlfcn.h>typedef const char* (*hello_func)();int main() {void* handle = dlopen("./libhello.so", RTLD_LAZY);if (!handle) {fprintf(stderr, "%sn", dlerror());return 1;}hello_func hello = (hello_func)dlsym(handle, "Hello");if (!hello) {fprintf(stderr, "%sn", dlerror());dlclose(handle);return 1;}printf("%sn", hello());dlclose(handle);return 0;}- 编译C程序并链接到动态库。在终端中,导航到包含
main.c文件的目录,然后运行以下命令:
gcc -o main main.c -ldl这将生成一个名为main的可执行文件。
- 运行生成的可执行文件:
./main你应该看到输出Hello from Go!,这表明你已经成功地从Go代码生成了一个动态库,并在C程序中调用了它。
相关文章
- DNF女武神与龙战搭配属性一览 06-13
- 流放之路2 0.5赛季霜焰新星配方总汇 06-13
- 别再求前端了!这款对标Claude Design的开源工具:让你一秒拥有顶级设计能力! 06-13
- 用TinyRobot Welcome组件构建贴心的AI助手欢迎页 06-13
- TinyVue图标组件深度解析:别人家的Icon是组件 我家的是函数 06-13
- 虚拟 DOM:中间层的智慧 06-13