ubuntu下vscode编写cgo程序
CGO顾名思义,是go语言用来调用c函数的工具。如果要使用CGO,首先要先确认一下是否安装GCC,因为go调用C之前需要将C语言代码编译。
本篇博客打算实现一个hello world
例子来作为入门的演示。
首先在main
包下新建一个hello
文件夹。里面有两个文件hello.c
和hello.h
。
其中hello.h
代码如下:
// main/hello/hello.h
void SayHello(const char* s);
hello.c
代码如下:
// main/hello/hello.c
#include <stdio.h>void SayHello(const char* s) {puts(s);
}
将c语言代码编译并生成静态链接库:
gcc -c -o hello.o hello.c
ar rcs libhello.a hello.o
然后编写go语言的main函数代码:
// main/main.go
package main//#cgo CFLAGS: -I./hello
//#cgo LDFLAGS: -L${SRCDIR}/hello -lhello
//
//#include "hello.h"
import "C"func main() {C.SayHello(C.CString("Hello, World\n"))
}
注意如下的注释必须要添加进去:
//#cgo CFLAGS: -I./hello
//#cgo LDFLAGS: -L${SRCDIR}/hello -lhello
//
//#include "hello.h"
在import "C"
语句前的注释中可以通过#cgo
语句设置编译阶段和链接阶段的相关参数。编译阶段的参数主要用于定义相关宏和指定头文件检索路径。链接阶段的参数主要是指定库文件检索路径和要链接的库文件。
上面的代码中,CFLAGS
部分,-I
定义了头文件包含的检索目录。LDFLAGS
部分,-L
指定了链接时库文件检索目录,-l
指定了链接时需要链接hello
库。这里面-lhello
就是指静态链接库libhello.a。
go语言代码在vscode中可能会报错,但是可以运行。在终端运行如下命令:
go run main.go
就可以得到结果。
ubuntu下vscode编写cgo程序相关推荐
- Ubuntu下VSCode调试C++程序以及opencv库和Qt5库
1.自述 自己用VSCode已经三年多了,大多数是写python程序,偶尔也写C++程序,但也不复杂,也不牵扯其他第三方库,就算牵扯第三方库,也大多是先写好CMakeLists文件,然后用标准的cma ...
- ubuntu下VSCode的配置
字体配置 在设置中搜索'font',在'Editor: Font family'中修改, 如下是Ubuntu下VSCode默认字体设置 'Droid Sans Mono', 'monospace', ...
- qt程序在Linux下字体乱了,解决linux/Ubuntu下Qt creater 界面程序在编译运行后无法显示中文或中文乱码问题!...
本文解决的主要是界面程序编译运行后无法显示中文的问题,如果在creater 中无法输入中文,下载个IBus或者搜狗之类的中文输入法即可解决! 首先说乱码问题,这个很好解决: 如果是在linux下打开W ...
- Ubuntu下VScode配置ssh免密远程登录
一 实现步骤 1.在本机与远程服务器上, 输入ssh-keygen -t rsa,然后连续回车直到结束 2.在本机上执行命令 ssh-copy-id 命令 (1).命令介绍 ssh-copy-id命令 ...
- Ubuntu下bpf纯c程序的编写与运行
1. 前言 搭建bpf运行环境真的是很费时间,踩过的坑也不少,今天也是因为虚拟机扩容崩了,重新安装了最新的ubuntu,bpf运行环境得以搭建完成,也算是破而后立.现在将bpf运行环境搭建和bpf纯c ...
- python 程序打包 vscode_使用VScode编写python程序并打包成.exe文件
听说Visual Studio Code(VS Code)的诸多好处,了解了一下果真很喜欢,我喜欢它的缘由主要有3个,一是VS Code开源且跨平台,二是由于其界面很是酷,三是能够知足个人大所属代码需 ...
- Ubuntu下VSCode的安装与卸载【闲聊】
安装VSCode 编辑器与编译器 在Ubuntu下我们善用于gcc编译器,vim编辑器,但是在编写一些大型的代码时,我们要用到Source insight ,因为这个软件不是免费的,在一些公司没有买这 ...
- Ubuntu下vscode使用
Ubuntu16.04下配置VScode的C/C++开发环境 ubuntu下使用VScode打开本地使用makefile编译的工程(包括命令行参数的配置) 1.安装 直接在Ubuntu打开软件中心进行 ...
- ubuntu下创建c语言程序之hello world
将要学习c语言了,先记录一下在ubuntu下,使用vim创建一个最基本的hello world程序: 打开终端,使用cd命令转到操作的目录,如我在home下的program files文件内创建, 就 ...
- ubuntu下安装摄像头应用程序xawtv
准备工作:安装xawtv应用程序 方法一. 源码xawtv-3.95.tar.gz xawtv官网下载: http://www.kraxel.org/releases/xawtv/ 下载后上传 ...
最新文章
- Arduino可穿戴教程ArduinoIDE新建编辑源文件
- HTML5 placeholder在低版本浏览器的解决方法
- on java8学习笔记2022.2.19-2022.2.20
- WPF 3D:使用GeometryModel3D的BackMaterial
- [转]android logo:内核、android开机动画
- Linux基本命令介绍
- 洛谷 P1843 奶牛晒衣服 1
- 再论《IT人员应聘建议》
- WINDOWS 2008的trustedinstallerexe占用过多CPU导致服务器性能下降的问题处理
- 微信H5分享钉钉分享设置方法
- solidworks_adams_simuilink联合仿真简易教程
- jsp 展示服务器pdf文件,jsp实现pdf在线预览功能
- 计算广告-商业化体系
- fastJson与String、对象、集合之间相互转换
- matplotlib 辅助线
- 黑马程序员-江远云 我的java语言基础之路4-语句篇
- centos安装 docker的教程
- NPN求解三极管电路或电容恒流放电详解,三极管工作在放大区,基极控制集电极电流,针对电荷泵电容恒流放电控制,因为电荷泵输出恒定电流给快充手机锂电池充电
- Pentaho Data Integration(Kettle) 6.0
- 华为可以更新鸿蒙系统,华为手机如何升级鸿蒙系统 步骤如下