m32 在64系統編譯32位的時候出現錯誤

2022-06-05 07:48:08 字數 2225 閱讀 7119

### 在window系統下編譯之前電腦和虛擬機器都是32位然後編譯出來執行一直暢快得很。 

現在都是64系統,當有天將原來的工程專案拿出來重現編譯的時候,才發先無論是window 還是 linux 都是非常折騰的事情。 

-  突然聯想到如果是新的專案,什麼用golang替代c/c++ 省心不少。 當前切換過程的是極端糾結的。 

### 編譯時候使用-m32 -m64 區別編譯出64bit還是32bit 

- 在linux 系統,沒遇到問題。 

- 在window系統,卻沒有找到答案。 $_$ 習慣性將遇到問題紀錄一下。

g++ -d_debug -c testmakefile.cpp -g -wall -o0 -m32 -o testmakefile.o

g++ -d_debug ./testmakefile.o -o testmakefile

c:/tdm-gcc-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: i386 architecture of input file `./testmakefile.o' is incompatible with i386:x86-64 output

./testmakefile.o: in function `printf':

c:/tdm-gcc-64/x86_64-w64-mingw32/include/stdio.h:300: undefined reference to `___mingw_vprintf'

./testmakefile.o: in function `main':

d:\vbubuntu\share\test\testmakefile/testmakefile.cpp:11: undefined reference to `___main'

d:\vbubuntu\share\test\testmakefile/testmakefile.cpp:14: undefined reference to `__zst4endlicst11char_traitsiceerst13basic_ostreamit_t0_es6_'

d:\vbubuntu\share\test\testmakefile/testmakefile.cpp:14: undefined reference to `__zst4cout'

d:\vbubuntu\share\test\testmakefile/testmakefile.cpp:14: undefined reference to `__znsolsepfrsos_e'

./testmakefile.o: in function `__tcf_0':

c:/tdm-gcc-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/iostream:74: undefined reference to `__znst8ios_base4initd1ev'

./testmakefile.o: in function `__static_initialization_and_destruction_0':

c:/tdm-gcc-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/iostream:74: undefined reference to `__znst8ios_base4initc1ev'

c:/tdm-gcc-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/iostream:74: undefined reference to `_atexit'

c:/tdm-gcc-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-crt0_c.o): in function `main':

c:/crossdev/src/mingw-w64-v4-git/mingw-w64-crt/crt/crt0_c.c:18: undefined reference to `winmain'

collect2.exe: error: ld returned 1 exit status

makefile:29: recipe for target 'testmakefile' failed

make: *** [testmakefile] error 1

- 沒找到答案,後續。 @-@

64位系統編譯32位程式

如上使用c4這個小工具時遇到來需要 32位系統的需求,發現使用 m32引數後,編譯提示錯誤,如下 usr bin ld 未知的 模式 32 支援的 elf x86 64 elf32 x86 64 elf i386 i386linux elf l1om elf k1om i386pep i386pe ...

64位Linux系統編譯32位匯程式設計序

64位linux系統編譯32位匯程式設計序的時候需要 32位系統的需求,發現使用 m32引數後,編譯提示錯誤,如下 usr bin ld 未知的 模式 32 支援的 elf x86 64 elf32 x86 64 elf i386 i386linux elf l1om elf k1om i386pe...

VS下編譯在64位系統下能用的32位系統

最近感覺電腦慢了,也為了嘗鮮64位系統,就安裝了乙個windows7的64位系統。有天有人報告我的寫的小工具有個小問題,我快速檢視了 並修正問題並重新編譯後執行卻發現在64位下無法正常執行,報錯總稱無法載入sharpsvn.dll,當時百思不得其解,感覺可能是因為我64位系統的原因,我就我電腦虛擬機...