Будет ли g ++ строить 64-битную на 64-битной системе?

Если я использую automake для создания библиотеки, если нет определенных флагов, определяющих целевую систему, результат будет соответствовать системе, в которой происходит сборка? Значение компилятора на 64-битной ОС будет производить 64-битный результат, а 32-разрядный будет производить 32-битный? (Я использую компилятор Fedora 16 и g ++)

Я предполагаю, что этот двоичный вывод будет таким же, как у архитектуры, на которой вы работаете … если флаги не изменяют это поведение. Итак, вы можете проверить это, компилируя что-то, а затем выполнив команду файла в двоичном формате. Это скажет вам, есть ли у 64 или 32 бит.

Да, если вы не ушли с пути, чтобы настроить его по-другому, GCC будет компилироваться для архитектуры вашего процессора. (Общая архитектура, а не конкретный вариант процессора – в вашем случае amd64 aka x86_64).

В типичных установках 64-разрядного GCC pass -m32 для компиляции для соответствующей 32-битной архитектуры (например, x86 в системе amd64). Запустите gcc --print-multi-lib чтобы посмотреть, какие архитектуры поддерживаются.

Если конкретный проект не имеет явных или неявных зависимостей от библиотек, которые всего 32 бит, то automake будет компилировать 64-битный исполняемый файл.

С обилием 64-битных систем и повторной реализацией вещей, которые раньше были только 32 бит, этого не произойдет в современной системе (то есть в 2010 году, включая Fedora 16)