我正在为Go中的C库编写一个Go包装器。问题是,C库在许多Linux发行版上都不可用,所以我想要一个解决方案,在这个解决方案中,我“get github.com/me/mylibrary”不需要任何人安装库。
一种解决方案是将库的源代码添加到子目录中。然后,当我的项目是用go get构建时,我也需要自动构建这个库。但我不知道我怎么能自动完成这个任务。
或者,我可以有一个脚本来下载源代码,提取并构建它。
但我不知道如何将这些构建步骤与go构建工具连接起来。
链接静态库也不是最容易的。
#cgo linux LDFLAGS: ./MyLib/lib/libMyLib.a -lstdc++ -lm -lX11
只要我从我的库构建,但只要我想从另一个项目构建相对路径是从该项目,而不是从我的库,所以它失败。
发布于 2014-04-17 14:55:34
根据command
当Go工具看到一个或多个Go文件使用特殊的导入"C“时,它将在目录中查找其他非Go文件,并将它们编译为Go包的一部分。任何.c、.s或.S文件都将使用C编译器编译。任何.cc、.cpp或.cxx文件都将使用C++编译器进行编译。
因此,您可以将C库源代码包括在存储库中,并且go将自动构建它。该页面还解释了如何将构建标志传递给编译器,以及您可能需要知道的其他任何事情。
https://stackoverflow.com/questions/23144556
复制相似问题