LINUX.ORG.RU

Как собирать на Fedora-64 32-битные приложения (CMake)

 , ,


0

1

Добрый день

Пытаюсь добиться сборки 32-битного варианта приложения (64 бита собирается без проблем). Использую CMake, который генерирует проект для GCC.

В файл CMake-а добавляю строку: set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS «-m32» LINK_FLAGS «-m32») На это CMake выдает ошибку: CMake Error at CMakeLists.txt:8 (set_target_properties): set_target_properties Can not find target to add properties to: mgcore

Как я понимаю, нет пакета для сборки в 32-битном режиме. Нахожу совет за 2023 год конкретно для Fedora, т.е. недавний: sudo dnf install gcc-multilib На это получаю сообщение об отсутствии такого пакета.

Разные вариации вариантов типа: sudo apt install gcc-multilib или sudo apt install g++-multilib тоже не работают, потому что apt на Fedore не хочет работать в принципе, а попытка подсунуть вместо него yum или apt-get также ведут к ошибке типа «такого пакета нет».

Ты бы хоть логи сборки предоставил. Я понимаю что CMake делали рукожопы, которые похерили дефолтный для кучи UNIX-like проектов make V=1, но make VERBOSE=1 или cmake --build . --verbose работать должны.

EXL ★★★★★
()
Ответ на: комментарий от EXL

рукожопы, которые похерили дефолтный для кучи UNIX-like проектов make V=1

Кокой кошмар, вместо V надо написать VERBOSE.

intelfx ★★★★★
()
Ответ на: комментарий от EXL

Хорошо, предоставляю то, что выдает CMake:


root@fedora build]# cmake ..

– The C compiler identification is GNU 6.4.1

– The CXX compiler identification is GNU 6.4.1

– Detecting C compiler ABI info

– Detecting C compiler ABI info - done

– Check for working C compiler: /usr/bin/cc - skipped

– Detecting C compile features

– Detecting C compile features - done

– Detecting CXX compiler ABI info

– Detecting CXX compiler ABI info - done

– Check for working CXX compiler: /usr/bin/c++ - skipped

– Detecting CXX compile features

– Detecting CXX compile features - done

CMake Error at CMakeLists.txt:8 (set_target_properties): set_target_properties Can not find target to add properties to: mgcore

– Configuring incomplete, errors occurred!


Не очень понял, что делать вот с этим: cmake –build . –verbose

[root@fedora build]# cmake .. –verbose

CMake Error: Unknown argument –verbose

CMake Error: Run ‘cmake –help’ for all supported options.

Odin_KG
() автор топика
Ответ на: комментарий от Odin_KG

А если просто тупо сделать костылём:

set(CMAKE_C_FLAGS "-m32")
set(CMAKE_CXX_FLAGS "-m32")

Если это сработает, значит у тебя проблема не с мультилибом, а с CMake и TARGET’ами в нём.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от papin-aziat

Не всё так просто, потому что всё это было уже установлено.

Odin_KG
() автор топика
Ответ на: комментарий от EXL

Кажется ваш совет с «костылём» работает. По крайней мере, я вижу, что команда:

objdump -f mylib.a | awk ‘sub(/.*file format /,"") && !a[$0]++’

показывает в результате elf32-i386

Благодарю за помощь!

Odin_KG
() автор топика

Телепаты мне нашептали, что у тебя set_target_properties(${PROJECT_NAME}) стоит до add_librarry(${PROJECT_NAME}).

Должно быть наоборот - сначала add_librarry(${PROJECT_NAME}), потом set_target_properties(${PROJECT_NAME}).

cdslow ★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.