如何在Linux上安装和使用GAS(GNU编译器)?

时间:2010-11-23 01:52:05

标签: linux ubuntu assembly gas

我正在使用Ubuntu,我正在为Linux寻找汇编编译器,我发现了GAS。

我正在尝试安装并运行它,但我不能。

5 个答案:

答案 0 :(得分:15)

asGNU Assembler。它位于binutils,但如果你这样做:

sudo apt-get install build-essential

您将获得gas以及gcc(默认使用gas进行后端汇编)。

有关使用gas的“教程”,您可能希望阅读使用它的Programming From the Ground Up


.s文件

构建静态可执行文件
#!/bin/bash
f="${1:-}"
as "${f}" -o "${f%%.s}.o" && ld "${f%%.s}.0" -o "${f%%.s}"
gcc -nostdlib -static "${f}" -o "${f%%.s}"

如果要与库链接,在从asm源文件构建可执行文件时,通常最简单的方法是让gcc使用asld的正确命令行选项。 如果gcc foo.s -o foo定义了foo.s功能,则main将有效。

还相关:Assembling 32-bit binaries on a 64-bit system (GNU toolchain)如果您在x86-64系统上编写32位程序。

答案 1 :(得分:4)

它位于binutils包中。

答案 2 :(得分:4)

启动Synaptic并在快速搜索栏中输入“gnu assembler”。很明显,binutils是必需的包。

你可能已经发现它已经安装好了。我的binutils 2.20.1-3ubuntu7已经安装好了,我的设置相当普遍。

从终端窗口输入as --version会通知您:

GNU assembler (GNU Binutils for Ubuntu) 2.20.1-system.20100303
Copyright 2009 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or later.
This program has absolutely no warranty.
This assembler was configured for a target of `i486-linux-gnu'.

答案 3 :(得分:0)

您是否阅读过http://www.faqs.org/docs/Linux-HOWTO/Assembly-HOWTO.html? Debian GAS包含在包

  

的binutils

所以

sudo apt-get install binutils
dpkg -L binutils

$ man as

答案 4 :(得分:0)

从源代码构建并使用它

#!/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

GitHub upstream

TODO:如何配置as特定选项?我们使用了./configure顶层的binutils-gdb,但是它包含多个项目的选项,例如我相信的gdb,而不是as的特定项目?

在Ubuntu 18.04上测试。