0
A
回答
1
是,只要使用-m32
,並確保你擁有所有的32個工具和庫安裝(不是所有的x86-64發行版包括這些默認情況下,所以你可能需要apt-get
或yast
或任何安裝這些)。
$ gcc -m32 -Wall foo.c -o foo
1
-m32
標誌是所有你需要的,即。
gcc -m32 ...
如果你得到一個錯誤,你可能需要32位資料庫,可能被命名爲類似glibc-devel.i686
。這是Fedora上的軟件包名稱(使用yum
),其他Linux發行版應該類似。
在Debian上& Ubuntu,你需要gcc-multilib
和ia32-libs-dev
包。
3
要彙編和64位multilib的GCC鏈接C源文件,你可以做到以下幾點:
gcc -m32 -c somefile.c
gcc -m32 somefile.o -o myprog
注意,所有32位庫需要安裝,並由multilib的編譯器可用。
ar
應該工作,如果構建正確,不鼓勵直接撥打ld
,因爲它的選項與GCC完全不同。只需與GCC聯繫。
至於爲什麼是「勸阻直接調用ld
」:如果所有gcc
鏈接,它會確切地知道系統/運行時庫的位置,也關於任何特定於平臺的選項就需要傳遞給ld
。直接撥打ld
時,需要注意所有這些。這裏對32位和64位的選項以及適當的庫目錄很重要。
1
是的,我需要-D_FILE_OFFSET_BITS = 64有時-m32使得一些麻煩,有時讓你不得不嘗試自己。
c++ -m32 -D_FILE_OFFSET_BITS=64 foo.c -o foo
但是,這是相反的。在32位盒子上編譯64位程序。
相關問題
- 1. 我在x86-64 PC上運行32位Windows。我應該下載32位還是64位的Python安裝程序?
- 2. 如何在64位RHEL上編譯32位應用程序?
- 3. LD_PRELOAD_PATH 32位應用程序在64位環境
- 4. 在64位Debian環境中編譯32位qt源碼
- 5. Linux環境構建32位和64位應用程序(C++)
- 6. 在64位機器上編譯32位matlab應用程序(C++)
- 7. 在64位Linux上編譯32位應用程序
- 8. 如何以編程方式在32位或64位環境中啓動程序?
- 9. 使用32位或64位DLL編譯.net應用程序
- 10. 在64位環境中使用32位程序集
- 11. 當我將64位應用程序安裝到32位程序文件(x86)中時,64位應用程序是否將以32位方式工作
- 12. Xcode:編譯與32位庫的64位應用程序
- 13. 編譯和鏈接Debian 64位上的32位應用程序
- 14. 分配32位和64位編譯應用程序
- 15. int_max在32位和64位環境中
- 16. Java程序文件(x86)的文件和程序文件64位和32位
- 17. 如何在x86-64 Centos系統上構建32位兼容libselinux
- 18. 在64位機器上編譯32位應用程序以獲得64位應用程序
- 19. 在32位環境下開發的ASP.NET應用程序不能在64位環境中工作
- 20. 在64位ubuntu上編譯32位彙編程序
- 21. x86彙編乘以兩個32位數
- 22. 在64位DMD上編譯32位
- 23. 在64位Linux上編譯32位libGLEW.so
- 24. 32位指針在64位Solaris編譯
- 25. 32位/ 64位Windows/Linux應用程序
- 26. .effmach x86無法從64位切換到32位
- 27. objdump無法在ELF 64位x86-64,
- 28. 64位在x86-64中的含義
- 29. 引用一個64位的x86彙編程序
- 30. 編譯爲64/32位iOS
OK,感謝保羅R.如何反向的問題?在32位環境中構建64位應用程序?使用-m64對不對?在X86-64環境 – Daniel
'-m64' WIL工作(但它是默認反正)。我不知道任何支持構建64位x86-64代碼的32位x86環境。 –
好的。感謝保羅 - [R^_^ – Daniel