2014-10-09 156 views
1

我的服務器是一個亞馬遜的Linux AMI 64位2014.09-release-notesAWS:不能執行二進制文件

我編譯C++編碼的程序(gcc48-C++ x86_64的安裝。):

[[email protected]***-**-**-*** waveform_generator]# make 
Compiled [src/main.cpp] >> [src/main.o] 
Compiled [src/File.cpp] >> [src/File.o] 
Compiled [src/AGenerator.cpp] >> [src/AGenerator.o] 
Compiled [src/GeneratorSVG.cpp] >> [src/GeneratorSVG.o] 
Compiled [src/GeneratorCanvas.cpp] >> [src/GeneratorCanvas.o] 
Compiled [src/GeneratorPNG.cpp] >> [src/GeneratorPNG.o] 
Compiled [src/Header.cpp] >> [src/Header.o] 
Compiled [src/pngwriter.cpp] >> [src/pngwriter.o] 
Built  [wfgen] 

現在,當我執行編譯的文件「wfgen」控制檯返回此消息:

[[email protected]***-**-**-*** waveform_generator]# bash wfgen 
wfgen: wfgen: cannot execute binary file 

環境:

[[email protected]***-**-**-*** waveform_generator]# uname -i 
x86_64 
[[email protected]***-**-**-*** waveform_generator]# file wfgen 
wfgen: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, BuildID[sha1]=2e7c881c6fc10f12cdf49402edae1cc36b8d77a0, not stripped 

你有解決我的問題嗎?

謝謝你:)

最大。

+0

直接鍵入程序的名稱能否請您關閉彩色輸出和重新運行'make'?真的很難讀到那裏發生的事情。 – lxg 2014-10-09 20:45:35

+0

好吧,沒事的:)我刪除顏色代碼 – maxsennin 2014-10-09 20:59:36

+0

好多了。 :)我冒昧地刪除了標籤。 – lxg 2014-10-09 21:07:30

回答

0

它看起來像編譯進行得很好,file命令的輸出看起來不錯。我不知道Makefile中有什麼,但是猜猜它也可以。

我真的不知道你的環境,所以我在這裏稍微猜測一下:如果一切順利,你仍然得到cannot execute binary file錯誤,那可能是因爲你的文件系統掛載了noexec選項。

要檢查是否屬於這種情況,請運行mount,然後確定當前目錄位於哪個安裝點,並檢查是否爲此安裝點設置了noexec安裝選項。

如果它確實是noexec問題,你有兩個選擇:

  1. 重新掛載文件系統,而不noexec選項。如果您希望這是永久性的,請不要忘記編輯/etc/fstab。 (但請注意,noexec可能是有原因的,請確保將其刪除。)
  2. 如果只有一個二進制文件,請將其移至沒有noexec限制的文件系統,然後從該文件系統嘗試。一個好地方將是/usr/local/bin目錄(或/usr/local/sbin,如果它是一個管理工具。)
+0

當我運行'mount'時,沒有「noexec」的標誌。 我嘗試在/ usr/local/bin中移動文件「wfgen」,並得到相同的結果...:/ – maxsennin 2014-10-09 22:09:17

+0

唉,我現在看到你正在嘗試用bash執行文件。這當然不能工作,因爲它是一個二進制文件。你需要'chmod + x'這個二進制文件,然後用'./wfgen'(如Sayu提出的)調用它。應該是這樣的。 – lxg 2014-10-09 22:13:44

+0

你的意思是像'chmod 0777 /'? – maxsennin 2014-10-09 22:23:03

1

當你鍵入

[[email protected]***-**-**-*** waveform_generator]# bash wfgen 

我想慶典預計wfgen是一個shell腳本。相反,你可以在前作提示

[[email protected]***-**-**-*** waveform_generator]#./wfgen 
+0

是的,你可能是正確的shell腳本解釋。 .. 但我直接嘗試'。/ wfgen'或'wfgen',我絕對沒有回報! – maxsennin 2014-10-09 22:14:58

+0

@maxsennin對不起,我沒有得到你。它是否在終端上打印任何內容? – 2014-10-09 22:21:52

+0

@maxsennin:如果你沒有得到輸出,執行'./wfgen; echo $?'? – lxg 2014-10-09 22:32:46

相關問題