centos交叉編譯
1. Golang 讀文件為什麼這么慢
mac下編譯器默認編譯的是mac os x的可執行文件。 編譯centos上的可執行文件的時候需要交叉編譯。 golang的交叉編譯很容易,你的情況的話用下面這條命令 GOOS=linux GOARCH=amd64 go build ./文件
2. centos7怎麼編譯安裝gcc-c++
方法/步驟
1
yum install glibc-static libstdc++-static -y
安裝c和c++的靜態庫(據說如果系統中缺少libc.a和libstdc++.a編譯時會出錯,但是我沒有那麼多閑情逸致去試,實踐過的朋友可以回復一下,分享一下經驗,讓大家都長長見識)
2
下載解壓gcc,我的gcc目錄是gcc-4.8.0
3
進入gcc目錄,執行:
./contrib/download_prerequisites
這個神奇的腳本文件會幫我們下載、配置、安裝那三個依賴的庫。可以節約我們大量的時間和精力。
4
你以為這三個庫自動下載了、自動make install了就沒事了嗎?錯!
很多人在編譯gcc的時候出現各種奇奇怪怪的錯誤就是這步沒有做好。
它們還不在.so文件的搜索路徑裡面,需要加進去,最後切記切記一定要執行一下ldconfig。
大致做法為:
1,找到你的共享庫文件被install到哪個目錄了(updatedb+locate命令)。
2,如果你的庫不是直接放在/lib或/usr/lib下,需要修改/etc/ld.so.conf文件,加入你的共享庫的路徑
3,如果在2中添加了共享庫路徑,切記要執行一下ldconfig,更新響應cache文件讓系統能找到你的共享庫。
5
建立臨時目錄,這個目錄用以存放編譯時的大量臨時文件,是文檔要求中必須的。
我是在gcc-4.8.0下建立了一個名為gcc-build-4.8.0的目錄,進入它。
mkdir gcc-build-4.8.0
cd gcc-build-4.8.0
配置gcc編譯選項
6
強烈建議閱讀INSTALL目錄下的說明文檔,尤其是configure.html,以確定你的編譯選項。
比較基本的選項有--enable-languages,說明你要讓你的gcc支持那些語言,--disable-multilib不生成編譯為其他平台可執行代碼的交叉編譯器。--disable-checking生成的編譯器在編譯過程中不做額外檢查,也可以使用--enable-checking=xxx來增加一些檢查。
網上還說了什麼--with-gmp、--with-mpfr、--with-mpc這三個選項,但是如果你3,4步做好了,就不要配了,反之你還是老實點吧別抱僥幸心理了。
調用gcc-4.8.0目錄下的configure文件:
例如:
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
7
執行
../make #不解釋
執行編譯命令(#在8核的虛擬機上進行編譯,每個核分配2個編譯任務)
make -j16
make install編譯過程CPU 核基本100%佔用,整個編譯用時11分50秒。
檢查gcc版本
#你就等吧少年,建議晚上睡覺前做
當然上面三步一定要在前一步順利結束的情況下進行,如果哪一步出錯了,結果都顯示error了,就不要再做後面的了。在shell的輸出里搜索"error"看具體的出錯點是什麼,、google一下為什麼。
如果你求穩的話,可以在make install之前先make check一下。
3. golang保存二進制文件會有大小端問題嗎
golang保存二進制文件會有大小端問題。
這個二進制文件的確有Big Endian 和Little Endian的問題,這個與CPU指令體系有關,不過不用操心,像JPEG就是Big Endian,其編解碼就都是按照這個約定來完成的,沒有平台問題,也沒有大小端的問題。
編譯centos上的可執行文件的時候需要交叉編譯。golang的交叉編譯很容易,你的情況的話用下面這條命令,GOOS=linux GOARCH=amd64 go build ./文件。
golang描述:
Go的語法接近C語言,但對於變數的聲明有所不同。Go支持垃圾回收功能。Go的並行模型是以東尼·霍爾的通信順序進程(CSP)為基礎。
採取類似模型的其他語言包括Occam和Limbo,但它也具有Pi運算的特徵,比如通道傳輸。在1.8版本中開放插件(Plugin)的支持,這意味著現在能從Go中動態載入部分函數。
與C++相比,Go並不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數等功能,但增加了 切片(Slice) 型、並發、管道、垃圾回收、介面(Interface)等特性的語言級支持。Go 2.0版本將支持泛型,對於斷言的存在,則持負面態度,同時也為自己不提供類型繼承來辯護。
4. golang 在mac 下go install成二進制文件,上傳到centos 無法執行
mac下編譯器默認編譯的是mac os x的可執行文件。
編譯centos上的可執行文件的時候需要交叉編譯。
golang的交叉編譯很容易,你的情況的話用下面這條命令
GOOS=linux GOARCH=amd64 go build ./文件