2009-11-18 2 views
11

По Apple's gcc 4.2.1 doc:Apple gcc, какая разница между -arch i386 и -m32?

-arch арка
Compile для указанной целевой архитектуры арки. Допустимыми являются значения «i386», «x86_64», «ppc» и «ppc64». Несколько опций работают, и направляет компилятор для создания «универсальных» двоичных файлов, включая объект код для каждой указанной архитектуры с -arch. Эта опция работает только если ассемблер и библиотеки доступны для каждой указанной архитектуры. (APPLE ONLY)

Так в чем разница между этими двумя вызовами:

gcc -arch i386 program.c

и

gcc -m32 program.c

Является ли это просто, что -arch является более мощным, как это более гибкая и может генерировать универсальные двоичные файлы при описании нескольких арков?

ответ

9

Я не уверен, но, читая страницу руководства, я получаю подобные выводы, как вы.

Я думаю, единственная реальная разница в том, что -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 
Смежные вопросы