我正在尝试编写引导加载程序,因此我需要 GNU Assembler。我在 Google 上搜索过,但没有找到任何有用的资料。我该如何安装 GNU Assembler(而不是 GNU Compiler)?
答案1
GNU 汇编器,又名as
,在 Ubuntu 上默认安装。它位于软件包中binutils
。
答案2
从源代码构建并使用它
#!/usr/bin/env bash
set -eux
# Build.
sudo apt-get build-dep binutils
git clone git://sourceware.org/git/binutils-gdb.git
cd binutils-gdb
git checkout binutils-2_31
./configure --target x86_64-elf --prefix "$(pwd)/install"
make -j `nproc`
make install
# Test it out.
cat <<'EOF' > hello.S
.data
s:
.ascii "hello world\n"
len = . - s
.text
.global _start
_start:
mov $4, %eax
mov $1, %ebx
mov $s, %ecx
mov $len, %edx
int $0x80
mov $1, %eax
mov $0, %ebx
int $0x80
EOF
./install/bin/x86_64-elf-as -o hello.o hello.S
./install/bin/x86_64-elf-ld -o hello hello.o
./hello
TODO:如何配置as
特定选项?我们已经使用了./configure
顶层的binutils-gdb
,但其中包含来自多个项目的选项(例如gdb
我相信),而不是as
特定选项?
在 Ubuntu 18.04 上测试。