1. 程式人生 > >golang 獨立打包(不依賴系統動態連結庫)

golang 獨立打包(不依賴系統動態連結庫)

為了減少golang部署對作業系統動態連結庫的依賴,我決定對自己的兩個golang專案進行獨立打包。

環境:Centos6.7 amd64

go版本:1.8

1. 首先,檢查使用普通打包方式build的出的二進位制檔案是否有依賴,我這裡是linux平臺使用ldd, os請使用otools工具。

[[email protected] main]$ ldd agent-server
linux-vdso.so.1 =>  (0x00007ffe069cd000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x000000308ac00000)
libc.so.6 => /lib64/libc.so.6 (0x000000308a800000)
/lib64/ld-linux-x86-64.so.2 (0x000000308a400000)

2. 獨立打包

[[email protected] main]$  go build -o agent-server  -ldflags '-linkmode "external" -extldflags "-static"' agent-server.go
# command-line-arguments
/usr/local/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/usr/bin/ld: cannot find -lpthread
collect2: ld returned 1 exit status

在獨立打包的過程中,出現上述錯誤,經過查詢資料發現作業系統少了glibc-static包造成的

直接使用yum安裝: yum install glibc-static -y

安裝後再次執行上述命令已經不報錯了。

然後繼續使用ldd命令檢查,發現已經沒有動態連結庫依賴。

[[email protected] main]$ ldd agent-server
not a dynamic executable

相關推薦

golang 獨立打包依賴系統動態連結

為了減少golang部署對作業系統動態連結庫的依賴,我決定對自己的兩個golang專案進行獨立打包。 環境:Centos6.7 amd64 go版本:1.8 1. 首先,檢查使用普通打包方式build的出的二進位制檔案是否有依賴,我這裡是linux平臺使用ldd, os請

mysql5.7壓測工具sysbench dbt2安裝找到lmysqlclient動態連結

問題 近期安裝linux centos6安裝mysql5.7後想用sysbench、dbt2進行壓測,死活安裝不上 cd /usr/local/sysbench make && make install 出現錯誤,lmysqlclient檔

Linux將命令新增到PATH中及PA LD_LIBRARY_PATH用於指定查詢共享動態連結時除了預設路徑之外的其他路徑

Linux將命令新增到PATH中部落格分類:linuxLinuxApacheBash簡單說PATH就是一組路徑的字串變數,當你輸入的命令不帶任何路徑時,LINUX會在PATH記錄的路徑中查詢該命令。有的話則執行,不存在則提示命令找不到。比如在根目錄/下可以輸入命令ls,在/u

一個動態小導航欄(好看的,用C3)依賴js,點擊小圖切換大的背景圖

width ima line auto fashion put spl body sha <!DOCTYPE HTML><htmllang="en-US"> <head> <meta charset="UTF-8

discuz新的單點論壇依賴UCenter

web應用 之前 .net emp linux時間 論壇 自己的 ng- define discuz 本身提供UCENTER用戶中心能夠實現單點登錄。可是其它應用要單點登錄到discuz還是存在若幹問題: 須要2次激活。可能造成server無響應,論壇顯示的最新註冊用戶

socket實現兩臺FTP服務器指定目錄下的文件轉移依賴第三方jar包

gets util new ram ali ftp文件 turn tps lap 通過socket實現兩臺FTP服務器指定目錄下的文件轉移,其中包含了基礎了ftp文件列表顯示、上傳和下載。這裏僅供學習用,需掌握的點有socket、ftp命令、文件流讀取轉換等 完整代碼如下:

前端jsp頁面 列舉類 搜尋 和 查詢結果動態展示 完全依賴介面 無需任何改動

前端頁面 應對列舉類 搜尋  和 查詢結果展示 (完全依賴介面 無需任何改動)  【問題現象產生】:後臺介面方提供的列舉型別總是變動,導致前端頁面如果寫死列舉型別,容易展示出問題(搜尋和查詢展示),具體就是少展示或多展示  【問題應對方案】:採

前端jsp頁面 列舉類 搜尋 和 查詢結果動態展示 完全依賴介面 無需任何改動

前端頁面 應對列舉類 搜尋  和 查詢結果展示 (完全依賴介面 無需任何改動)  【問題現象產生】:後臺介面方提供的列舉型別總是變動,導致前端頁面如果寫死列舉型別,容易展示出問題(搜尋和查詢展示),具體就是少展示或多展示  【問題應對方案】:採用前端頁面直接載入後臺介

【轉】Ubuntu系統python3安裝模組修改python2的軟連線

ubuntu系統是自帶python2.7(預設)和python3.4的,可以使用python -V和python3 -V檢視已安裝python版本。 但是在不同版本的python中ubuntu預設沒有安裝pip,所以需要自己手動安裝pip。 (1)在不同版本中安裝pip,可以使用一下命令:

android 自定義類似91遊,360應用內懸浮球使用系統懸浮框

專案需要,製作類似360,UC類似遊戲內的懸浮球 1.開始使用的是系統的懸浮,新增系統許可權android.permission.SYSTEM_ALERT_WINDOW,獲取windowManager , 設定佈局引數,新增view來實現, 優點:處於系統最上層,一次新增,

DoubleLinkedList獨立實現,依賴任何包

public class DoubleLinkedList<E> {     class Node<E> {         E element;         Node prev;         Node next;         public Node(E element) 

Android系統啟動時間系統當前時間的獲取

1》.查裡很多資料,並沒有找到直接獲取系統啟動時間(不是系統當前時間)的ApI; 思路轉換為:接收系統的開機廣播,在廣播裡面獲取當前的時間; 2》.注意幾點: 1.BootUPReceiver廣播類

apk重打包使用apktool

使用工具: ununtu系統 smali.jar baksmali.jar signapk.jar 步驟:  unzip crackme1.apk -d crackme1     //將apk檔案解壓到crackme1資料夾  cd crackme1/  java -ja

Golang 學習筆記定期更新

本文主要記錄作者使用 Go 開發過程中的問題及總結。 1)不同檔案屬於同一個 package,每個 go 檔案如果有 init(), 則全部 init() 會預設執行,根據包的匯入先後及遞進關係來先後執行;同一個檔案可以有多個同名 init 函式,即不會出現重

java中呼叫本地動態連結*.DLL的兩種方式詳解和not found library、打包成jar,war包dll無法載入等等問題解決辦法

我們經常會遇到需要java呼叫c++的案例,這裡就java呼叫DLL本地動態連結庫兩種方式,和載入過程中遇到的問題進行詳細介紹 1、通過System.loadLibrary("dll名稱,不需要字尾名

Java Swing 圖形界面實現驗證碼驗證碼可動態刷新

string ble urn repaint xtend efault event adapt 內容 import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.To

Windows 10卸載Edge瀏覽器成功的別試了

develop style pre 系統 log -a mode disable evel 在命令行輸入: PowerShell dir $env:LOCALAPPDATA\Packages\*edge*^|ren -newname MicrosoftEdge.old

過濾當前目錄下的一級目錄包含目錄下的目錄

一級目錄方法一[[email protected]/* */ ~]# ls -ltotal 56drwxr-xr-x. 2 root root 4096 Jul 2 09:48 a-rw-------. 1 root root 1079 Jun 9 07:12 anaconda-ks.cf

點擊不同按鈕,加載不同的頁面使用iframe的情況下

lis button sco oos cati 情況 main style pla <button id="button1">Load Html1</button> <button id="button2">Load Html2<

java學習之路--繼承多態的動態綁定

程序 有一個 完全 報錯 參數類型 其中 完全匹配 一個 執行過程 動態綁定過程中,對象調用對象方的執行過程   1:編譯器查看對象的聲明類型和方法名。有可能有多個方法名相同,但參數類型不一樣的重載方法。   2:編譯器查看調用方法時提供的參數類型。該過程叫重載解析,在相同