2014-05-06 41 views
34

使用對在64位Linux操作系統的32位編譯程序導致致命錯誤

gcc -m32 myprog.c 

在32位版本的文件myprog.c應編譯。

不幸的是我得到這個錯誤:

In file included from /usr/include/stdio.h:27:0, 
       from myprog.c:1: 
/usr/include/features.h:374:25: fatal error: sys/cdefs.h: No such file or directory 
#include <sys/cdefs.h> 

我怎麼能解決這個問題?

如果我不使用-m32它可以工作,但使用64位指令。

+0

32位版本代碼 – AndreaF

+1

如果您刪除'-m32'標誌,程序編譯會很好嗎? –

+0

hope http://forums.xilinx.com/t5/High-Level-Synthesis-HLS/Vivado-HLS-cdefs-h-No-such-file-or-directory/td-p/324969幫助 –

回答

72

編譯在64位Linux版本的32位二進制文​​件,您必須安裝libx32gcc開發包和32位GNU C庫

試試這個

sudo apt-get install libx32gcc-4.8-dev 

sudo apt-get install libc6-dev-i386 
+8

謝謝,BTW libc6-dev-i386將依賴安裝libx32gcc,因此不需要手動安裝它:D –

+0

libx32gcc與lib32gcc不同。 libx32gcc取決於在x86_64 CPU上以32位模式運行的擴展。如果你的目標是真正的32位intel cpu,它將會失敗 – Wyatt8740

7

你需要gcc multilib支持。安裝包裝gcc-multilib。例如:

sudo apt-get install gcc-multilib 
相關問題