Czy jest możliwe aby skompilować projekt w wersji 32-bitowej z cmake
i gcc
na 64-bitowym systemie? Pewnie tak, ale jak to zrobić?
Kiedy wypróbowałem to w "ignorancki" sposób, bez ustawiania żadnych parametrów / flag / itp., Po prostu ustawienie LD_LIBRARY_PATH
znajdowania powiązanych bibliotek ~/tools/lib
wydaje się ignorować to i szukać tylko w podkatalogach o nazwie lib64 .
Odpowiedzi:
export CFLAGS=-m32
źródło
-m32
go doCFLAGS
, prawdopodobnie ustawiającCMAKE_REQUIRED_FLAGS
.export
znaczy? Gdzie to należy? Pliki nagłówkowe? Themakefile
? Nie, zupełnie nie jest to odpowiedź dla mnie jako początkującego.cmake
(jednak w twoim przypadku, jeśli masz plik Makefile,make
zamiast tego używałbyś ).W skrócie: użyj
-m32
flagi, aby skompilować 32-bitowy plik binarny.Upewnij się również, że masz zainstalowane 32-bitowe wersje wszystkich wymaganych bibliotek (w moim przypadku wszystko, czego potrzebowałem w Fedorze, to glibc-devel.i386)
źródło
sudo apt-get install gcc-multilib
W nowszych wersjach CMake jednym ze sposobów na zrobienie tego na każdym celu jest:
set_target_properties(MyTarget PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
Nie wiem, jak to zrobić na całym świecie.
źródło
cmake -D CMAKE_CXX_FLAGS=-m32 . && make
W przypadku C ++ możesz:
export CXXFLAGS=-m32
Działa to z cmake.
źródło
Jednym ze sposobów jest skonfigurowanie środowiska chroot. Debian ma do tego wiele narzędzi, na przykład debootstrap
źródło
W przypadku każdej złożonej aplikacji sugeruję użycie kontenera LXC . Kontenery lxc są „czymś pośrodku między chrootem na sterydach a pełnoprawną maszyną wirtualną”.
Na przykład, oto sposób na zbudowanie 32-bitowego wina przy użyciu lxc w systemie Ubuntu Trusty:
sudo apt-get install lxc lxc-templates sudo lxc-create -t ubuntu -n my32bitbox -- --bindhome $LOGNAME -a i386 --release trusty sudo lxc-start -n my32bitbox # login as yourself sudo sh -c "sed s/deb/deb-src/ /etc/apt/sources.list >> /etc/apt/sources.list" sudo apt-get install devscripts sudo apt-get build-dep wine1.7 apt-get source wine1.7 cd wine1.7-* debuild -eDEB_BUILD_OPTIONS="parallel=8" -i -us -uc -b shutdown -h now # to exit the container
Oto strona wiki o tym, jak zbudować 32-bitowy wine na 64-bitowym hoście przy użyciu lxc .
źródło
atom
edytora tekstu dla 32-bitowej maszyny 64-bitowej?