я собираюсь портировать очень масштабное приложение на 64 бита, я заметил, что в Интернете есть несколько статей, которые показывают много подводных камней этого портирования, Я задавался вопросом, есть ли какой-либо инструмент, который может помочь в портировании на 64 бит, то есть найти места в коде, которые необходимо изменить .... может быть, gcc с включенными предупреждениями ... это достаточно хорошо? Есть ли что-нибудь лучше?
РЕДАКТИРОВАТЬ: Ребята, я ищу инструмент, если таковой имеется, который может быть полным для компилятора,
я знаю, что GCC может справиться, но я сомневаюсь, что он найдет все непереносимые проблемы, которые
будет обнаружен во время выполнения .... может быть инструмент статического анализа кода, который подчеркивает
перенос на 64 бита?
спасибо
Размер некоторых типов данных различается в 32-битной и 64-битной ОС, поэтому проверьте место, где код принимает размер типов данных. например, если вы использовали указатель на int, это не сработает в 64-битной версии. Это должно решить большинство проблем.
Если ваше приложение использует сторонние библиотеки, убедитесь, что они работают и в 64-битной версии.
Хороший инструмент называется grep
;-) do
grep -nH -e '\<int\>\|\<short\>\|\<long\>' *
and replace все простое использование этих основных целочисленных типов правильным:
size_t
uintptr_t
prtdiff_t
uintN_t
и так далее, я, наверное, что-то забыл. Затем gcc
со всеми предупреждениями сообщит вам об этом. Вы также можете использовать clang
в качестве компилятора, он дает еще больше диагностики.
Во-первых, зачем нужен "перенос"?
Учтите, что большинство дистрибутивов уже более десяти лет весело предоставляют 32- и 64-битные варианты для . Так что, если вы не программируете по-настоящему непереносимым образом (а вам почти нужно попробовать), все должно быть в порядке.
Как насчет компиляции проекта в 64-битной ОС? Компилятор gcc выглядит как такой инструмент :)