Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
静态链接go程序与GNU读线_Go_Static Linking_Libreadline - Fatal编程技术网

静态链接go程序与GNU读线

静态链接go程序与GNU读线,go,static-linking,libreadline,Go,Static Linking,Libreadline,我正在编写一个Go程序,它使用GNU readline库实现一个奇特的命令行界面。为了简化安装过程,不必担心库版本和其他问题,我想静态链接它 问题是我真的不知道怎么做。如果我预编译库,我将不得不提供代码的多个版本,以及.a或.lib readline库的不同版本。为了避免这个问题,我考虑将当前的readline代码包含到我的go项目中,并让go工具在构建go项目时编译它。但是,要构建readline库,必须使用make。有没有办法告诉go工具如何构建C代码?是的,您当然可以这样做。我最近在另一个

我正在编写一个Go程序,它使用GNU readline库实现一个奇特的命令行界面。为了简化安装过程,不必担心库版本和其他问题,我想静态链接它


问题是我真的不知道怎么做。如果我预编译库,我将不得不提供代码的多个版本,以及.a或.lib readline库的不同版本。为了避免这个问题,我考虑将当前的readline代码包含到我的go项目中,并让go工具在构建go项目时编译它。但是,要构建readline库,必须使用
make
。有没有办法告诉go工具如何构建C代码?

是的,您当然可以这样做。我最近在另一个项目中做了类似的事情,主要是因为代码没有作为库提供(Ubuntu只编译它的命令行工具)。为了实现这一点,我运行了带有选项的
autoconf
脚本,我认为这些选项在大多数系统中都是合理的,并将C代码与自动构建的
config.h
头文件一起复制到Go package目录中。然后,我用
make
构建了一次原始的C代码,观察了gcc在编译和链接它时会得到哪些选项,并将适当的选项复制到其中(您也可以检查
Makefile
,但这更简单)

以下是一些旁注:

  • 您是否考虑过在Go中自己进行readline工作?如果它不能完全解决你的问题,那么它至少是一个相当好的种子

  • 请记住,尽管readline是一个库,但它是GPL。如果你链接或嵌入你自己的软件,你就必须把它作为GPL来授权。如果您愿意的话,还有其他许可证不那么严格的


    • 我建议避免阅读,因为有更好的选择;如

      请将此评论作为对问题的评论发布。它没有回答这个问题。