Ответ 1
Я не уверен, но, читая man-страницу, я получаю подобные выводы, как вы.
Я предполагаю, что единственное реальное отличие состоит в том, что -arch
можно использовать для создания универсальных двоичных файлов.
Как это работает для создания универсальных двоичных файлов
gcc -arch i386 -arch x86_64 foo.c
но на самом деле вы не можете быть уверены в семантике следующего (они, вероятно, даже недействительный синтаксис). Особенно третья должна быть недействительной, как написано в man-страницах для создания для 32- или 64-разрядных сред.
gcc -m32 -arch i386 -arch x86_64 foo.c
gcc -m64 -arch i386 -arch x86_64 foo.c
gcc -m32 -m64 -arch i386 -arch x86_64 foo.c
-m32 -m64 Generate code for a 32-bit or 64-bit environment. The 32-bit environment sets int, long and pointer to 32 bits and generates code that runs on any i386 system. The 64-bit environment sets int to 32 bits and long and pointer to 64 bits and generates code for AMDs x86-64 architecture. For darwin only the -m64 option turns off the -fno-pic and -mdynamic-no-pic options. -arch //already included in question