ตอนนี้, ใน gcc, คุณสามารถตั้งค่า-m32
สถานะเพื่อให้คอมไพล์แหล่งที่มาของ linux เป็น 32 บิต ฉันไม่มีความรู้ที่กว้างขวางเกี่ยวกับ Makefiles แต่คุณสามารถปรับแต่งได้
แก้ไข:
ฉันต้องการเพิ่มคำถามจาก stackoverflowที่นี่ซึ่งได้รับคำสั่งให้ตั้งค่า cflags:
export CFLAGS=-m32
และจากที่เก็บ linux ในบัญชี Github ของTorvaldsฉันพบส่วนต่อไปนี้ใน makefile หลักที่คุณอาจพบว่ามีประโยชน์เพราะมันบอกว่าคุณสามารถตั้งค่าสถาปัตยกรรมเป้าหมายโดยการตั้งค่าตัวแปรสภาพแวดล้อม อ่านความคิดเห็นปัจจุบันบรรทัดเหล่านี้มาจากไฟล์นี้ระหว่างบรรทัด174-196 :
# Cross compiling and selecting different set of gcc/bin-utils
# ---------------------------------------------------------------------------
#
# When performing cross compilation for other architectures ARCH shall be set
# to the target architecture. (See arch/* for the possibilities).
# ARCH can be set during invocation of make:
# make ARCH=ia64
# Another way is to have ARCH set in the environment.
# The default ARCH is the host where make is executed.
# CROSS_COMPILE specify the prefix used for all executables used
# during compilation. Only gcc and related bin-utils executables
# are prefixed with $(CROSS_COMPILE).
# CROSS_COMPILE can be set on the command line
# make CROSS_COMPILE=ia64-linux-
# Alternatively CROSS_COMPILE can be set in the environment.
# A third alternative is to store a setting in .config so that plain
# "make" in the configured kernel build directory always uses that.
# Default value for CROSS_COMPILE is not to prefix executables
# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
export KBUILD_BUILDHOST := $(SUBARCH)
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
# ...
# There are more architecture related stuff beyond this line