我的系統是Centos 5.8 64位,我想編譯一個鏈接到32位庫的文件。編譯時加上-m32,但結果顯示「輸入文件」gc_basic_call_model_voice_video_3g_cnf_nbup.o「的i386:x86-64架構與i386輸出不兼容」。 看來,該文件不能在32位編譯。但是如果我不添加-m32,庫不能被編譯。如何成功編譯文件,謝謝!如何編譯與32位庫鏈接的64位文件
0
A
回答
6
您不能在同一個程序中混合使用32位和64位代碼。編譯器告訴你,你的.o
文件之一被編譯爲64位對象,所以它不能鏈接到32位可執行文件中。您需要重新編譯該目標文件,也可能使用其他源代碼,使用-m32
來處理所有內容。
0
假設你編譯你的程序的32位版本(姑且稱之爲foo.c的)以下列方式:
gcc -m32 -c foo.c -o foo.o
您應該然後調用使用-melf_i386標誌就可以了鏈接。
ld <whatever commands/flags you gave earlier> -melf_i386
實施例:
ld -o foo.bin --oformat binary basic.o -melf_i386
相關問題
- 1. 編譯和鏈接Debian 64位上的32位應用程序
- 2. Xcode:編譯與32位庫的64位應用程序
- 3. 編譯爲64/32位iOS
- 4. 符號鏈接編譯使用32位庫的代碼在64位的Ubuntu 12.10
- 5. 如何鏈接64位編譯器(體系結構)的32位框架
- 6. 在Centos中鏈接64位應用程序與32位庫5.6 64位
- 7. 使用64位應用程序鏈接QT 32位庫(MinGW64編譯器)?
- 8. 在64位DMD上編譯32位
- 9. 從Win7編譯32位64位
- 10. Java類編譯64位32位
- 11. 在64位Linux上編譯32位libGLEW.so
- 12. 32位指針在64位Solaris編譯
- 13. 將32位代碼編譯爲64位
- 14. 在linux 64位下與32位庫鏈接
- 15. 在Windows 64位上運行的Matlab 32位編譯MEX文件
- 16. 將32位編譯後的開源庫轉換爲64位編譯庫
- 17. gcc:在32位平臺上編譯64位二進制文件
- 18. 試圖在OS X上編譯32位和64位的GNU庫
- 19. 動態庫的鏈接問題的Solaris(32位和64位)10
- 20. 我如何檢查編譯的二進制文件是32位還是64位?
- 21. Gluegen 32位和64位庫
- 22. 如何在py2app的32位舊版Mac上編譯64位Python庫(例如SIP)?
- 23. 如何編程混合32位庫和64位庫
- 24. Java JDK 32位與64位
- 25. SHGetFolderPath()32位與64位
- 26. 如何在64位系統上以32位模式編譯openSSL?
- 27. 如何在64位RHEL上編譯32位應用程序?
- 28. 如何將32位編譯二進制轉換爲64位
- 29. 使用CMake編譯32位與64位項目
- 30. 編譯從32位到64位的軟件
哪臺機器? Linux呢? – weima 2012-04-09 05:16:27
你使用過標誌'-fPIC'和'-rdynamic' – weima 2012-04-09 05:19:41
我使用命令「gcc -m32 A.c B.c -Ldir -o output1.o output2.o」。但結果顯示i386:輸入文件「output1.o」的x86-64架構與i386輸出不兼容。 dir中的文件是32位庫。我不知道該怎麼做:( – Jasoniem9246 2012-04-09 05:43:38