портирование 32-битного приложения linux на 64-битное?

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

РЕДАКТИРОВАТЬ: Ребята, я ищу инструмент, если таковой имеется, который может быть полным для компилятора, я знаю, что GCC может справиться, но я сомневаюсь, что он найдет все непереносимые проблемы, которые
будет обнаружен во время выполнения .... может быть инструмент статического анализа кода, который подчеркивает перенос на 64 бита?

спасибо

7
задан Robocide 25 August 2010 в 12:10
поделиться

4 ответа

Вот руководство . Другой

Размер некоторых типов данных различается в 32-битной и 64-битной ОС, поэтому проверьте место, где код принимает размер типов данных. например, если вы использовали указатель на int, это не сработает в 64-битной версии. Это должно решить большинство проблем.

Если ваше приложение использует сторонние библиотеки, убедитесь, что они работают и в 64-битной версии.

4
ответ дан 7 December 2019 в 01:14
поделиться

Хороший инструмент называется grep ;-) do

grep -nH -e '\<int\>\|\<short\>\|\<long\>' *

and replace все простое использование этих основных целочисленных типов правильным:

  • индексы массива должны быть size_t
  • приведения указателей должны быть uintptr_t
  • различия указателей должны быть prtdiff_t
  • типы с предположением о ширине N должно быть uintN_t

и так далее, я, наверное, что-то забыл. Затем gcc со всеми предупреждениями сообщит вам об этом. Вы также можете использовать clang в качестве компилятора, он дает еще больше диагностики.

4
ответ дан 7 December 2019 в 01:14
поделиться

Во-первых, зачем нужен "перенос"?

Учтите, что большинство дистрибутивов уже более десяти лет весело предоставляют 32- и 64-битные варианты для . Так что, если вы не программируете по-настоящему непереносимым образом (а вам почти нужно попробовать), все должно быть в порядке.

1
ответ дан 7 December 2019 в 01:14
поделиться

Как насчет компиляции проекта в 64-битной ОС? Компилятор gcc выглядит как такой инструмент :)

1
ответ дан 7 December 2019 в 01:14
поделиться