linux 静态编译 yara
最近有個需求,要在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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ida pro 7.5 idapytho
- 下一篇: pip3使用豆瓣源