1

Тема: x86 та x64 збірки на Linux із CMake

У мене такий CMakeLists.txt

cmake_minimum_required(VERSION 3.2)
project(CMakeLearning)
add_executable(CMakeLearning main.cpp)
 
set (CMAKE_CXX_FLAGS "-std=c++11 -O3 ${CMAKE_CXX_FLAGS}")

set (CXXFLAGS "-m64 ${CXXFLAGS}")
set (CFLAGS "-m64 ${CFLAGS}")

Я хотів би збирати 32- або 64-бітну збірку за потребою. Але незалежно від -m32 чи -m64 я отримую 64-бітну, я це бачу з того, що

cout << sizeof(void*) << endl;

завжди 8.

Подякували: 0xDADA11C7, leofun01, sensei3

2

Re: x86 та x64 збірки на Linux із CMake

може 32-бітне не компілюється? оголосіть логи компілера

Подякували: LoganRoss1

3

Re: x86 та x64 збірки на Linux із CMake

Насправді розмір вказівника залежить від стандарту компілятора і теоретично на 32 бітній системі вказівник може бути 8 байт.

Подякували: 0xDADA11C7, varkon, HetmanNet3

4

Re: x86 та x64 збірки на Linux із CMake

Не знаю які саме логи треба, тому все що є:

bash-4.2$ cmake .
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /bin/cc
-- Check for working C compiler: /bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /bin/c++
-- Check for working CXX compiler: /bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: ...
bash-4.2$ make
Scanning dependencies of target CMakeLearning
[100%] Building CXX object CMakeFiles/CMakeLearning.dir/main.cpp.o
Linking CXX executable CMakeLearning
[100%] Built target CMakeLearning

5

Re: x86 та x64 збірки на Linux із CMake

Можливо ваша проблема залежить від того, чи маєте ви x86 версію компілятора в системі.

Подякували: HetmanNet, LoganRoss2

6

Re: x86 та x64 збірки на Linux із CMake

Спробуйте щось таке:

sudo apt-get install g++-multilib libc6-dev-i386

якщо ви користуєтесь убунтою

7

Re: x86 та x64 збірки на Linux із CMake

спробуйте для початку просто вашим компілятором зібрати два варіанти, щоб визначити, чи проблема в тому, що чогось бракує вашій системі, чи cmake'у

виведіть ще sizeof(size_t), а то всяке буває