2017-09-26 66 views
2

我想只是編譯上似乎是相似(都是Ubuntu的64位),但二進制文件沒有被Ubuntu(這是64位太亞馬遜實例可以運行,但不知道多少比那更多的)。crosscompile C++二進制亞馬遜EC2

我見過一個線程暗示紡額外的EC2實例只是編譯那裏,但我不能外轉移來源,只有編譯的二進制文件和動態庫是不是一個解決方案。

在想着我的電腦產卵EC2的克隆編譯那裏做一個虛擬的環境,但它是可行的?

內核信息:

uname -a 
4.4.0-93-generic     #116-Ubuntu SMP Fri Aug 11 21:17:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 
ip-xxx-xxx-xxx-xxx 4.4.0-1035-aws #44-Ubuntu SMP Tue Sep 12 17:27:47 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 

它使用了一些亞馬遜定製的內核似乎?

文件的信息:

file ./testBinary 
./testBinary: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), too many program (2304) 
file -Pelf_phnum=3000 ./testBinary 
./testBinary: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), corrupted program header size, corrupted section header size 

回答

1

你真的無法 '克隆' 的EC2實例,你已經從一些AMI創建。因此,由於您沒有關於爲什麼您的庫無法正常工作的任何詳細信息,我建議運行Amazon Linux而不是Ubuntu。

你可以在一個碼頭工人集裝箱你的機器上運行,亞馬遜Linux和有建立自己的圖書館(https://hub.docker.com/_/amazonlinux/)。這樣,圖書館應該可以在任何使用Amazon Linux的EC2中順利運行。

如果你想堅持與Ubuntu,起碼你應該匹配的Ubuntu版本(不只是架構),並可能內核版本。

+0

新增的內核信息,運行錯誤是標準的「不能執行二進制文件:執行格式錯誤」試圖運行不同類型的二元我認爲當你嘗試二進制運行ARM這樣的事情發生時的錯誤你例如x86。 – user3002166

+0

這看起來像手臂二進制或什麼的。但是你可以在目標系統上用簡單的'file/path/to/your/executable'開始調試,看看它的樣子。從文件./executable –

+0

新的信息 - 我試圖尋找這個輸出,但我發現,如果有人試圖破解其中,文件保護,拆卸程序的情況下。這個測試二進制文件我從源代碼編譯我自己,並沒有做任何事情。如果滿足所有依賴關係,則使用ubuntu在物理計算機上運行。 – user3002166