Ist es möglich, ein Projekt in 32-Bit mit cmake
und gcc
auf einem 64-Bit- System zu kompilieren ? Es ist wahrscheinlich, aber wie mache ich das?
Als ich es auf "ignorante" Weise versuchte, ohne Parameter / Flags / usw. festzulegen, schien es nur zu ignorieren, nur LD_LIBRARY_PATH
die verknüpften Bibliotheken ~/tools/lib
darin zu finden, und nur in Unterverzeichnissen mit dem Namen lib64 zu suchen .
Antworten:
quelle
-m32
zu derCFLAGS
, die wahrscheinlich durch EinstellungCMAKE_REQUIRED_FLAGS
.export
das Wo gehört es hin? Die Header-Dateien? Diemakefile
? Nein, für mich als Anfänger überhaupt keine Antwort.cmake
(in Ihrem Fall jedoch, wenn Sie ein Makefile haben, würden Siemake
stattdessen verwenden).Kurz gesagt: Verwenden Sie das
-m32
Flag, um eine 32-Bit-Binärdatei zu kompilieren.Stellen Sie außerdem sicher, dass Sie die 32-Bit-Versionen aller erforderlichen Bibliotheken installiert haben (in meinem Fall war alles, was ich auf Fedora benötigte, glibc-devel.i386).
quelle
sudo apt-get install gcc-multilib
In späteren Versionen von CMake besteht eine Möglichkeit, dies auf jedem Ziel zu tun, darin:
set_target_properties(MyTarget PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
Ich kenne keinen Weg, dies global zu tun.
quelle
cmake -D CMAKE_CXX_FLAGS=-m32 . && make
Für C ++ können Sie Folgendes tun:
Dies funktioniert mit cmake.
quelle
Eine Möglichkeit besteht darin, eine Chroot-Umgebung einzurichten. Debian hat dafür eine Reihe von Tools, zum Beispiel Debootstrap
quelle
Für jede komplexe Anwendung empfehle ich die Verwendung eines lxc-Containers . lxc-Container sind "etwas in der Mitte zwischen einer Steroid-Chroot und einer vollwertigen virtuellen Maschine".
Hier ist beispielsweise eine Möglichkeit, 32-Bit-Wein mit lxc auf einem Ubuntu Trusty-System zu erstellen:
Hier ist die Wiki-Seite zum Erstellen von 32-Bit-Wein auf einem 64-Bit-Host mit lxc .
quelle
atom
Texteditor für 32-Bit in einem 64-Bit-Computer kompilieren ?