最近有个需求,要在go中调用yara,发现官方的go-yara跨平台做的不是很好,于是决定在go中直接调用外部yara程序,这样只需要写一份代码在windows和linux上都能用了。

发现官方只提供了windows的发布程序,linux需要自行编译或者apt yum 安装,但是用户的环境中没有网,无法apt yum,所以只剩下两条路,让用户自己编译yara或者我先编译好再与go程序一起发布。想想第一种方案其实是不可能的,因为编译yara需要许多工具,也是需要下载的:

sudo apt-get install automake libtool make gcc pkg-config

于是只剩下最后一个方法,自己编译yara。这里就遇到困难了,按照官方编译教程:

./bootstrap.sh
./configure
make

编译出来的yara是动态链接的,比如我在ubuntu编译好,拿到centos是无法运行的,缺库。windows只要将需要的dll和exe放在一个目录下就行了,linux却不是这样。

反正就挺折腾的,网上说gcc静态编译出来的程序不是真正的静态编译,可能要换musl之类的编译器才行,这里又因为yara用了configure自动生成makefile,我又不会makefile,就很头大。但是不管怎样现在问题暂时解决了,我在ubuntu编译出yara,file 看是静态链接的,拿到centos也能用,暂时没发现什么异常,所以我就把现在这个可能不是很完美的解决方案记录下来:

如果安装官方的方法编译,出来的程序是 dynamic linked 的。那么应该怎么改呢,参考这篇文章:

https://stackoverflow.com/questions/20068947/how-to-static-link-linux-software-that-uses-configure

所以只需要执行下面的命令就好了:

./bootstrap.sh
./configure CFLAGS="-static"
make LDFLAGS="-all-static"

给 configure 和 make 都加上 static 的要求就行了,这有个前提,项目必须包含 libtool 这玩意,yara是符合要求的。

linux 静态编译 yara相关推荐

  1. 记录下 QT Linux 静态编译遇到的坑

    记录下 QT Linux 静态编译遇到的坑 记录下 QT Linux 静态编译遇到的坑 - 貘吃馍的日志 - 网易博客 http://qbaok.blog.163.com/blog/static/10 ...

  2. linux 静态编译 glibc,GCC静态链接glibc库

    如果你的编译环境是高版本的glibc库,而运行程序的环境(机器)安装的glibc是低版本的话,在运行程序的时候,就会告诉你 cannot find GLIBC_2.14 类似这样的错误,上面的2.14 ...

  3. linux 静态编译多媒体框架,Go编译32位GNU静态链接库的方法

    Go链接库系统的难用可谓是人尽皆知,不同Go版本编译出来的不兼容,而且只支持GNU的,不能编译出Windows上的dll和lib. 本次有需求是将Go代码编译成32位GNU静态链接库. Go代码 编写 ...

  4. linux静态编译libcurl,libcurl嵌入式Linux移植

    目标:编译出libcurl.a静态库,移植到自己的项目中 1. 下载Libcurl 进入https://curl.haxx.se/download.html页面,选择下载libcurl源码 2. 配置 ...

  5. linux 静态编译netcat,linux上安装netcat

    安装方式一:yum安装 yum install -y netcat 或者 yum install -y nc 安装方式二:编译安装 1.下载 https://download.csdn.net/dow ...

  6. 易语言linux静态编译失败,易语言静态编译出现错误求解决

    静态编译程序的时候出现这个... 开始静态链接... LIBC.lib(crt0dat.obj) : error LNK2005: __cinit already defined in libcmt. ...

  7. Linux下静态编译的一个TIP

    Linux下静态编译的一个TIP | 素包子 Linux下静态编译的一个TIP 2010年3月28日 baoz 阅读评论 linux下静态编译好处很多,一来是可以跨发行版(debian redhat ...

  8. Linux下快速静态编译Qt以及Qt动态/静态版本共存

    Qt下静态编译Qt,根据我的经验,如果按照Windows下那种直接拿官方sdk安装之后的文件来编译是行不通的,需要直接下载Qt的source包,目前诺基亚的源码叫做qt-everywhere-open ...

  9. linux centos 编译luabind-0.9.1 动态库 静态库

    luabind下载 luabind-0.9.1 下载地址 :http://download.csdn.net/download/yzf279533105/10109861 编译步骤 一. 需先编译好l ...

最新文章

  1. mysql/mariadb:数据库变量(参数)管理
  2. ajax php加载列表实例,jQuery+PHP+ajax实现加载更多内容列表
  3. 深js, jsconf China 回顾
  4. 金山网盾3.5.3版本预升级公告
  5. SpringMVC处理自定义异常,通过读取配置文件把错误信息显示在前台页面
  6. LCD RGB 控制技术讲解 — 时钟篇(上)
  7. Sorting It All Out (易错题+拓扑排序+有向图(判环+判有序)优先级)
  8. P4245 【模板】任意模数多项式乘法
  9. windows运行linux脚本命令大全,查看和运行 Windows PowerShell 脚本
  10. 前端学习(1291):nodejs的系统模块文件读取操作
  11. 7.Handling Missing Values
  12. itertools chain
  13. python和什么语言类似_python与其他语言的对比
  14. Oracle表空间、段、区和块
  15. 算法基础--基本排序算法总结·
  16. ZStack 3.6.0发布:支持云主机从KVM云平台在线迁移至ZStack
  17. 腾讯云域名购买和域名解析教程
  18. kafka mysql 迁移,kafka迁移数据目录
  19. vs-debugger远程调试卡死解决
  20. 音频接口简介(PDM/PCM/IIS/SLIMBUS)

热门文章

  1. Jenkins 设置镜像_我常用的SpringBoot+Jenkins自动化部署技巧,贼好用,推荐给大家...
  2. AGI:走向通用人工智能的【生命学哲学科学】第二篇——思维、生命科学、客观世界
  3. HighNewTech:2019.08.09程序猿界大事件之【你好,我是鸿蒙OS】~【来了,老弟】—技术才是硬道理,开源方能建立新生态!
  4. Keras之DNN:基于Keras(sigmoid+binary_crossentropy+predict_proba)利用DNN实现分类预测概率——DIY二分类数据集预测新数据点
  5. Py之pygame:Python的pygame库的简介、安装、使用方法详细攻略
  6. 7.1 TensorFlow笔记(基础篇):加载数据之预加载数据与填充数据
  7. Android IllegalStateException: The specified child already has a parent问题解决办法
  8. Merge Sorted Array
  9. 某站点下载资源自己主动评论器
  10. 数据结构图之二(最小生成树--克鲁斯卡尔算法)