Компилирует ли libc6-i386 64-битные исполняемые файлы?

У меня установлен libc6-i386 на мой 64-битный процессор Intel i3.

Стоит ли устанавливать amd64-версии libc или придерживаться i386, так как у меня процессор Intel?

0
задан 10 April 2013 в 13:13

1 ответ

TL; DR: Если вы используете 64-битную версию Ubuntu и вызываете GCC как gcc (для C) или g++ (для C ++), вам не нужно беспокоиться о наличии libc-i386 в вашей системе. 64-битная система с работающим компилятором создаст двоичные файлы, которые ссылаются на соответствующую 64-битную версию libc.

libc6-i386 компилирует 64-битные исполняемые файлы?

libc-i386 ничего не компилирует, потому что не является компилятором. Компилятор C - это gcc . Файлы libc и заголовочные файлы libc важны, но пассивны в процессе сборки. Код предварительно обрабатывается, включая информацию из заголовочных файлов. Это скомпилировано. Это связано с libc. libc не делает ничего из этого , ваши инструменты сборки - главным образом gcc (в том смысле, что это команда, которую вы чаще всего запускаете, чтобы эти вещи происходили) - делают это.

Если вы используете 64-битную версию Ubuntu и у вас установлен компилятор C, то у вас уже есть необходимые библиотеки и заголовочные файлы для компиляции и связывания программ с 64-битной реализацией libc. Я предполагаю, что это ситуация, в которой вы находитесь. Обратите внимание, что наличие 32-битного libc не препятствует использованию 64-битного libc по умолчанию , если вы не выполняете кросс-компиляцию 32-битного двоичного файла (что вы, как правило, знаете, что делаете, поскольку это требует немного усилий, и вы, вероятно, не будете ссылаться на gcc как gcc). Поэтому вам не нужно беспокоиться о наличии libc-i386 в вашей системе.

Если вы работаете с 32-битной версией Ubuntu и хотите кросс-компилировать 64-битные двоичные файлы, вам понадобится что-то, что обеспечивает 64-битную версию libc, а также заголовочные файлы для него. (Заголовочные файлы, официально предоставляемые в Ubuntu, предоставляются пакетами, имена которых оканчиваются на -dev.) Однако, хотя 32-разрядные двоичные файлы могут работать в 64-разрядной операционной системе, 64-разрядные двоичные файлы не могут работать в 32-разрядной операционной системе. , Поэтому, если вам действительно не требуется кросс-компиляция, обычно лучше создавать 64-битные программы в 64-битной операционной системе.

Учитывая небольшой объем предоставленной вами информации, было бы сложно дать ответ, более конкретный для вашей ситуации.

0
ответ дан 10 April 2013 в 13:13

Другие вопросы по тегам:

Похожие вопросы: