& ldquo; Неисправность пакета & rdquo; при установке любого программного обеспечения

Разница между amd64 и i386 заключается в том, что amd64 является 64-разрядным, а i386 - 32-разрядным. Это ширина (в битах) регистров, доступных в ядре.

В основном наибольшее число, которое может обрабатывать 32-битное ядро ​​процессора за один раз, составляет чуть более 4,29 миллиарда, в то время как 64-битное ядро ​​может обрабатывать несколько бит более 18,44 миллиарда, миллиард.

Ядра в современных ПК способны вести себя как 64-разрядный или 32-разрядный процессор в зависимости от версии установленной операционной системы.

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

Компиляция на 32-разрядной системе приведет к созданию другого кода, чем 64-битная система. Вы можете это доказать, составив код сборки в двух системах. Предполагая, что ваш файл C является amd64 попробуйте gcc -S myfile.c в обеих системах и сравните myfile.s

Хорошо написанный код для 32-разрядной системы должен компилироваться и запускаться на 64-битной но не весь код хорошо написан. Многие программисты делают допущения относительно системы, которые могут быть неверными: например, ширина регистра или порядок байтов.

Без доступа к исходному коду трудно понять, в чем проблема, но segmenation fault указывает, что была предпринята попытка доступа к памяти, которая не принадлежит программе. Это может, например, указать, что myfile.s - 32-разрядный указатель, который отлично подходит для 32-разрядной системы, но должен быть 64-разрядным указателем на 64-битной системе. [ ! d14]

0
задан 22 June 2017 в 22:07

0 ответов

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

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