Apakah mungkin untuk mengkompilasi proyek dalam 32-bit dengan cmake
dan gcc
pada sistem 64-bit ? Mungkin memang begitu, tetapi bagaimana saya melakukannya?
Ketika saya mencobanya dengan cara "bodoh", tanpa mengatur parameter / flags / etc, hanya pengaturan LD_LIBRARY_PATH
untuk menemukan perpustakaan yang terhubung di ~/tools/lib
dalamnya tampaknya mengabaikannya dan hanya melihat di subdirektori bernama lib64 .
Jawaban:
sumber
-m32
keCFLAGS
, mungkin oleh pengaturanCMAKE_REQUIRED_FLAGS
.export
artinya Di mana tempatnya? File header? Itumakefile
? Tidak, sama sekali bukan jawaban untuk saya sebagai pemula.cmake
(namun dalam kasus Anda, jika Anda memiliki Makefile, maka Anda akan menggunakanmake
sebagai gantinya).Singkatnya: gunakan
-m32
flag untuk mengkompilasi biner 32-bit.Juga, pastikan bahwa Anda memiliki versi 32-bit dari semua perpustakaan yang diperlukan diinstal (dalam kasus saya semua yang saya butuhkan di Fedora adalah glibc-devel.i386)
sumber
sudo apt-get install gcc-multilib
Dalam versi CMake selanjutnya, satu cara untuk melakukannya pada setiap target adalah:
set_target_properties(MyTarget PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
Saya tidak tahu cara melakukannya secara global.
sumber
cmake -D CMAKE_CXX_FLAGS=-m32 . && make
Untuk C ++, Anda bisa melakukan:
Ini bekerja dengan cmake.
sumber
Salah satu caranya adalah dengan mengatur lingkungan chroot. Debian memiliki sejumlah alat untuk itu, misalnya debootstrap
sumber
Untuk aplikasi yang kompleks, saya sarankan untuk menggunakan wadah lxc . Wadah lxc adalah 'sesuatu di tengah-tengah antara chroot steroid dan mesin virtual lengkap'.
Sebagai contoh, inilah cara untuk membuat anggur 32-bit menggunakan lxc pada sistem Ubuntu Trusty:
Berikut adalah halaman wiki tentang cara membuat anggur 32-bit pada host 64-bit menggunakan lxc .
sumber
atom
editor teks untuk 32bit di mesin 64bit?