Я предпочитаю, чтобы .hpp для C++ прояснил обоим редакторам и другим программистам, что это - заголовок C++, а не заголовочный файл C.
Один из способов - настроить среду chroot. В Debian есть несколько инструментов для этого, например debootstrap
$ gcc test.c -o testc $ file testc testc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped $ ldd testc linux-vdso.so.1 => (0x00007fff227ff000) libc.so.6 => /lib64/libc.so.6 (0x000000391f000000) /lib64/ld-linux-x86-64.so.2 (0x000000391ec00000) $ gcc -m32 test.c -o testc $ file testc testc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped $ ldd testc linux-gate.so.1 => (0x009aa000) libc.so.6 => /lib/libc.so.6 (0x00780000) /lib/ld-linux.so.2 (0x0075b000)
Вкратце: используйте флаг -m32
для компиляции 32-битного двоичного файла.
Также убедитесь, что у вас установлены 32-битные версии всех необходимых библиотек (в моем случае все, что мне нужно в Fedora, было glibc-devel.i386)
В более поздних версиях CMake один способ сделать это для каждой цели:
set_target_properties (MyTarget PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
Я не Я не знаю, как это сделать в глобальном масштабе.