Afaik, trong gcc, bạn có thể đặt -m32
cờ để cho phép nó biên dịch các nguồn linux thành các tệp thực thi 32 bit. Tôi không có kiến thức rộng về Makefiles, nhưng bạn có thể điều chỉnh chúng.
chỉnh sửa:
Tôi muốn thêm một câu hỏi từ stackoverflow tại đây, trong đó nó được yêu cầu đặt cflags:
export CFLAGS=-m32
Và từ kho lưu trữ linux trong tài khoản github của Torvalds , tôi đã tìm thấy phần sau trên tệp chính mà bạn có thể thấy hữu ích, vì nó cho biết rằng bạn có thể đặt kiến trúc đích bằng cách đặt biến môi trường. Đọc các bình luận, hiện tại, các dòng này là từ tệp này , giữa các dòng 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