Cómo instalar y utilizar el gas (GNU Compiler) en Linux?
Pregunta
Estoy usando Ubuntu, y yo estaba buscando un compilador de ensamblador para Linux, y me encontré con GAS.
Estoy tratando de instalarlo y ejecutarlo, pero no puedo.
Solución
as es la href="http://en.wikipedia.org/wiki/GNU_Assembler" rel="nofollow noreferrer"> GNU Assembler . Se encuentra en binutils
pero si lo hace:
sudo apt-get install build-essential
obtendrá gas
junto con gcc
(que utiliza por defecto gas
para el montaje en la parte final).
Para un 'tutorial' sobre el uso de gas
, es probable que desee leer de programación desde las bases , que lo utiliza.
Para construir un ejecutable de un archivo estático .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}"
Si desea enlace con las bibliotecas, la cual es normalmente más fácil de dejar que gcc utilizar las opciones de línea de comandos adecuados para as
y ld
la hora de construir un ejecutable de un archivo fuente asm.
gcc foo.s -o foo
funcionará si su foo.s
define una función main
.
También relacionado: Montaje de 32 bits binarios en un sistema de 64 bits (GNU toolchain) si usted está escribiendo programas de 32 bits en un sistema x86-64.
Otros consejos
Es en el paquete binutils
.
Fuego Synaptic e introducir "GNU Assembler" en la barra de búsqueda rápida. Es obvio que binutils
es el paquete requerido.
Y que pueden encontrarse con que ya está instalado. Mi binutils 2.20.1-3ubuntu7
ya está instalado y tengo una puesta a punto bastante vainilla.
Al entrar as --version
desde una ventana de terminal le permitirá saber:
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'.
¿Ha leído http://www.faqs.org/docs /Linux-HOWTO/Assembly-HOWTO.html ? en Debian gas está contenido en el paquete
binutils
so
sudo apt-get install binutils
dpkg -L binutils
$ hombre como
Construir desde la fuente y utilizarlo
#!/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: cómo configurar opciones específicas as
? Hemos utilizado el ./configure
desde la parte superior de nivel binutils-gdb
, pero que contiene opciones de múltiples proyectos como gdb
creo, y no los as
específicos?
Probado en Ubuntu 18.04.