Вопрос Sizeof(void*) возвращает 8 байт с флагом -m32

  • Автор темы Автор темы mxrz
  • Дата начала Дата начала
Searching for myself
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
214
Реакции
69
Компилирую с помощью
Пожалуйста, авторизуйтесь для просмотра ссылки.
на x64 винде, флаг для линкера и компилятора -m32 через cmake. Но при sizeof(void*) получаю 8 байт
1678184110175.png

process hacker показывает x86
1678184139341.png

В чем может быть трабл?
 
Компилирую с помощью
Пожалуйста, авторизуйтесь для просмотра ссылки.
на x64 винде, флаг для линкера и компилятора -m32 через cmake. Но при sizeof(void*) получаю 8 байт Посмотреть вложение 240979
process hacker показывает x86 Посмотреть вложение 240980
В чем может быть трабл?
а можешь прям в пустом проекте в терминал размер вывести? а то ты только информацию из вскода (или что это) показал, а он вполне может обмануть (особенно если учесть, что у тебя
Пожалуйста, авторизуйтесь для просмотра ссылки.
клэнг, который так-то 64битный)

Пожалуйста, авторизуйтесь для просмотра ссылки.
 
  • Мне нравится
Реакции: mxrz
Я посмотрю, как ты модульные проекты на GCC том же самом будешь делать :NotLikeThis:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -march=i686")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32")

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

Пожалуйста, авторизуйтесь для просмотра ссылки.
Да просто смешно было, я выводил в консоль, у меня через раз то 8, то 4... Ребутнул пк, очистил кэш смейк, и все нормально
 
Компилирую с помощью
Пожалуйста, авторизуйтесь для просмотра ссылки.
на x64 винде, флаг для линкера и компилятора -m32 через cmake. Но при sizeof(void*) получаю 8 байт Посмотреть вложение 240979
process hacker показывает x86 Посмотреть вложение 240980
В чем может быть трабл?

Проблема заключается в том, что вы используете флаг -m32 для компиляции и линковки, который указывает компилятору и линкеру использовать 32-битный режим, но ваша операционная система является 64-битной, поэтому sizeof(void*) будет равен 8 байтам.

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

Вам следует либо использовать флаг -m64, который заставит компилятор и линкер использовать 64-битный режим, либо установить и использовать 32-битную версию операционной системы для использования флага -m32.
 
  • Раздражает
Реакции: mxrz
без кросскомпайла ему без разницы на твоё решение, что посчитает нужным - то и впишет
 
  • Попкорн
Реакции: mxrz
Назад
Сверху Снизу