golang在window环境下用cgo编译c语言

简介:

   网上有很多使用cgo的教程了,在这里分享一种非常简单的windows环境下完成cgo编译的方法。

   首先,下载win环境下gcc下载:TDM gcc,安装后会自动加入到PATH下,cmd里就能使用gcc命令。我的电脑上cgywin在使用gcc总是会出问题,如果cgywin的gcc可以正常编译,就无须再另外下载gcc了。

   编写含C语言的go文件:

1
2
3
4
5
6
7
8
9
10
package cgotest
                                                                   
/*
#include <stdio.h>
*/
import  "C"
                                                                   
func PrintHello() {
     C.puts(C.CString( "Hello, world\n" ))
}

   

   在此目录下创建批处理文件cgo.bat:

1
2
C:\Go\pkg\tool\windows_386\cgo cgotest.go
go install


   双击运行cgo.bat就会在该目录下生成 _obj 文件夹:

wKioL1LtJ3TywfzXAAEL81Q4kH4320.jpg

   且会在GOPATH下的pkg生成我们要调用的 cgotest.a 静态链接库

   再需要的源码中的import加入"cgotest"即可。










本文转自 ponpon_ 51CTO博客,原文链接:http://blog.51cto.com/liuxp0827/1355463,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
编译器 测试技术 Go
Go语言的自给自足:编译自身的神奇之旅
Go语言的自给自足:编译自身的神奇之旅
|
1月前
|
Shell Linux API
C语言在linux环境下执行终端命令
本文介绍了在Linux环境下使用C语言执行终端命令的方法。首先,文章描述了`system()`函数,其可以直接执行shell命令并返回结果。接着介绍了更强大的`popen()`函数,它允许程序与命令行命令交互,并详细说明了如何使用此函数及其配套的`pclose()`函数。此外,还讲解了`fork()`和`exec`系列函数,前者创建新进程,后者替换当前进程执行文件。最后,对比了`system()`与`exec`系列函数的区别,并针对不同场景推荐了合适的函数选择。
|
2月前
|
编译器 Go 开发者
Go 在编译时评估隐式类型的优点详解
【8月更文挑战第31天】
26 0
|
3月前
|
Serverless Go C语言
函数计算产品使用问题之如何在Golang运行时环境中解决glibc依赖问题
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
Linux C语言 Windows
C语言文件编程-Linux环境下运行
本文介绍了在Linux环境下使用C语言进行文件编程时的两种主要接口:C标准库函数与Linux系统调用。C标准库提供了`fopen`, `fread`, `fwrite`, 和 `fclose`等函数,适用于普通文件操作;而Linux系统调用如`open`, `read`, `write`, 和 `close`则更适合处理设备文件,同时也可用于普通文件。这两种方法的主要区别在于前者使用文件指针,后者使用文件描述符。文章还给出了两个示例程序:一个使用C标准库函数实现文件复制,另一个则使用Linux系统调用完成相同任务。
40 2
|
2月前
|
C语言 索引
C语言编译环境中的 调试功能及常见错误提示
这篇文章介绍了C语言编译环境中的调试功能,包括快捷键操作、块操作、查找替换等,并详细分析了编译中常见的错误类型及其解决方法,同时提供了常见错误信息的索引供参考。
|
4月前
|
存储 编译器 C语言
C语言学习记录——调试技巧(VS2019环境下)
C语言学习记录——调试技巧(VS2019环境下)
44 2
|
4月前
|
缓存 应用服务中间件 Go
Go打包和部署:从编译到运行的全指南
本文介绍了Go语言项目的打包和部署方法,包括使用`go run`、`go build`和`go install`命令进行编译,以及跨平台交叉编译。文章还提到了编译参数如`-x`、`-n`和`-race`等。此外,还讨论了如何利用第三方工具(如go-bindata)打包非Go文件,以及清理编译缓存和压缩二进制文件。最后,文中展示了如何使用supervisor和Docker进行部署,并提供了Nginx的反向代理配置示例。
1649 1
|
4月前
|
存储 自然语言处理 编译器
C语言——环境与预处理
C语言——环境与预处理
23 0
|
4月前
|
编译器 C语言
C语言环境处理收尾
C语言环境处理收尾
19 0