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.

¿Fue útil?

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

GitHub aguas arriba .

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top