Архивные файлы x32 или x64?

В C++, когда вы архивируете объектные файлы в файл .a, имеет ли значение платформа?

Например, я компилирую платформу x64 с помощью компилятора x64, я компилирую кучу файлов CPP в файлы .o. Используя AR.exe, я архивирую их в файл .a и распространяю.

Будет ли файл .a x32, x64 или взаимозаменяемым? ИЛИ это зависит от программы, использующей файл .a?


person Brandon    schedule 15.03.2013    source источник
comment
Файл .a просто содержит объекты внутри, поэтому это будет любая платформа, для которой был скомпилирован исходный код. Однако с помощью таких инструментов, как lipo, вы можете распространять кроссплатформенные файлы .a.   -  person Richard J. Ross III    schedule 16.03.2013
comment
Файлы .o уже будут настолько зависимы от платформы, насколько это возможно, ar не исправит это волшебным образом.   -  person    schedule 16.03.2013


Ответы (1)


Предполагая, что «компиляция с компилятором x64» означает, что он генерирует 64-битный код, независимо от того, является ли он 64-битным исполняемым файлом, ваши файлы .a будут 64-битным кодом. Они генерируются из ваших файлов .o, которые представляют собой 64-битные двоичные файлы, сгенерированные вашим компилятором. .a не может быть чем-то большим или отличным от файлов .o, из которых он состоит.

person John    schedule 15.03.2013
comment
Оооооо я вижу. Я думал, что файлы .a будут каким-то образом, и любая программа, связанная с ними, решит, является ли это x32 или x64. Спасибо за разъяснение этого. - person Brandon; 16.03.2013