У меня установлен libc6-i386 на мой 64-битный процессор Intel i3.
Стоит ли устанавливать amd64-версии libc или придерживаться i386, так как у меня процессор Intel?
TL; DR: Если вы используете 64-битную версию Ubuntu и вызываете GCC как gcc
(для C) или g++
(для C ++), вам не нужно беспокоиться о наличии libc-i386
в вашей системе. 64-битная система с работающим компилятором создаст двоичные файлы, которые ссылаются на соответствующую 64-битную версию libc.
libc6-i386 компилирует 64-битные исполняемые файлы?
blockquote>
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-битной операционной системе.Учитывая небольшой объем предоставленной вами информации, было бы сложно дать ответ, более конкретный для вашей ситуации.