Jermineの博客

Jermineの博客

用心若镜,不将不迎,应而不藏,故能胜物而不伤. ——《庄子·应帝王》

  • 首页
  • Github
  • Go语言标准库
  • Nyx
  • 关于我

Golang生成C/C++可调用的动态库.so和静态库

Golang类似于C的静态语言,效率也接近于C,如果Golang也可以导出可供C调用的库,那可以和很多高级语言say goodbye了,goodbye似乎又有点武断,但至少说,Golang可以做很多事,而且效率优于很多高级语言,这样说应该没有问题。 接下来,就从三个方面分别来介绍Golang中关于库的使用。

2017年03月29日

Golang与C互用以及调用C的so动态库和a静态库

Golang与C的关系非常密切,下面主要介绍在Golang中使用C。

Golang中嵌入C代码

 1 package main
 2 //#include <stdio.h>
 3 //#include <stdlib.h>
 4 /*
 5 void Hello(char *str) {
 6     printf("%s\n", str);
 7 }
 8 */
 9 import "C" //假设把C当成包,其实有点类似C++的名字空间
10  import "unsafe" //C指针的使用,在C代码中申请的空间,GC垃圾回收机制不会管理,所以需要自己手动free申请的空间
11  func main() {
12      s := "Hello Cgo"
13      cs := C.CString(s)
14      C.Hello(cs)
15      C.free(unsafe.Pointer(cs))
16  }

3,4行的注释也可以写/* */形式 第4行与第5行之间不能有空行,同样第9行与第10行之间也不 能有行,否则编译时cgo会报错:

2017年02月23日

标签

  • agent3
  • ai4
  • ai agent1
  • aider1
  • ai编程1
  • all1
  • alpine linux1
  • arm6
  • arm646
  • autossh2
  • c/c++2
  • ceph1
  • chart1
  • claude code7
  • cli2
  • cloudflare1
  • code-review1
  • codex2
  • conda1
  • cross-compiling1
  • cuda4
  • cursor2
  • database1
  • debug1
  • deeplearn3
  • devops3
  • dns1
  • doas1
  • docker19
  • dotnet core1
  • editor1
  • efficiency4
  • fuse1
  • gdb1
  • gemini cli1
  • git6
  • go1
  • golang6
  • gpu1
  • harbor3
  • helm1
  • hud1
  • influxdb1
  • jenkins1
  • jermine1
  • jira2
  • k8s3
  • kimi1
  • kubernates2
  • kubernetes3
  • kvm5
  • ldap2
  • linux33
  • linux管理1
  • markdown1
  • mcp1
  • microservice1
  • mirrors1
  • mq1
  • music1
  • nexcloud1
  • nvida-docker1
  • nvidia3
  • obsidian1
  • openclaw1
  • opencv2
  • openshift2
  • openstack1
  • ppt1
  • prompt engineering1
  • proot-distro1
  • python3
  • raspberry-pi7
  • rdp1
  • registry1
  • reviewboard1
  • samba1
  • server4
  • shortcut keys1
  • skill1
  • sse1
  • ssh2
  • ssh-tunnel2
  • swap1
  • tensorflow3
  • termux1
  • tools5
  • ubuntu1
  • vs-code2
  • web1
  • websocket1
  • windows4
  • wsl1
  • zsh2
  • 交叉编译1
  • 产品经理1
  • 代理1
  • 关于我1
  • 写作1
  • 协议2
  • 反向代理1
  • 反向隧道1
  • 反思1
  • 哲学1
  • 嵌入式1
  • 工作流1
  • 庄子1
  • 应物1
  • 开发工具2
  • 开源1
  • 心性1
  • 成本优化1
  • 故障排查1
  • 效率工具2
  • 敏捷开发1
  • 文件系统1
  • 武汉大学授课1
  • 端口转发1
  • 终端2
  • 编程工具1
  • 自动化1
  • 课程1
  • 跳板机1
  • 远程桌面1
  • 项目管理1
  • 飞书1

归档

标签云

agent ai ai agent aider ai编程 all alpine linux arm arm64 autossh c/c++ ceph chart claude code cli cloudflare code-review codex conda cross-compiling cuda cursor database debug deeplearn devops dns doas docker dotnet core editor efficiency fuse gdb gemini cli git go golang gpu harbor helm hud influxdb jenkins jermine jira k8s kimi kubernates kubernetes kvm ldap linux linux管理 markdown mcp microservice mirrors mq music nexcloud nvida-docker nvidia obsidian openclaw opencv openshift openstack ppt prompt engineering proot-distro python raspberry-pi rdp registry reviewboard samba server shortcut keys skill sse ssh ssh-tunnel swap tensorflow termux tools ubuntu vs-code web websocket windows wsl zsh 交叉编译 产品经理 代理 关于我 写作 协议 反向代理 反向隧道 反思 哲学 嵌入式 工作流 庄子 应物 开发工具 开源 心性 成本优化 故障排查 效率工具 敏捷开发 文件系统 武汉大学授课 端口转发 终端 编程工具 自动化 课程 跳板机 远程桌面 项目管理 飞书
RSS 订阅

Powered by Jermine © 2026 Jermineの博客