12

私は Ubuntu を使用しており、Linux 用のアセンブラー・コンパイラーを探していたところ、GAS を見つけました。

インストールして実行しようとしていますが、できません。

4

5 に答える 5

21

asGNU アセンブラーです。それはで見つかりましたbinutilsが、そうする場合:

sudo apt-get install build-essential

あなたは(バックエンドでの組み立てにデフォルトで使用される)とgas仲良くなります。gccgas

の使用に関する「チュートリアル」については、それを使用するProgramming From the Ground Upgasをお読みになることをお勧めします。


ファイルから静的実行可能ファイルをビルドするには.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 ソース ファイルから実行可能ファイルをビルドするときにas、 gcc に適切なコマンド ライン オプションを使用させるのが最も簡単です。関数を定義すると機能します。ld
gcc foo.s -o foofoo.smain

関連: x86-64 システムで 32 ビット プログラムを作成している場合は、64 ビット システム (GNU ツールチェーン) で 32 ビット バイナリを組み立てます。

于 2010-11-23T01:57:11.713 に答える
4

binutilsパッケージに入っています。

于 2010-11-23T01:53:50.017 に答える
4

Synaptic を起動し、クイック検索バーに「gnu アセンブラー」と入力します。それ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'.
于 2010-11-23T01:56:46.540 に答える
0

http://www.faqs.org/docs/Linux-HOWTO/Assembly-HOWTO.htmlを読みましたか? on Debian GAS はパッケージに含まれています

ビンユーティリティ

それで

sudo apt-get install binutils
dpkg -L binutils

$man as

于 2010-11-23T01:58:40.710 に答える
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 アップストリーム.

TODO:as特定のオプションを設定するには? トップレベルのを使用し./configureましたが、特定のプロジェクトではなく、私が信じているような複数のプロジェクトのオプションが含まれていますか?binutils-gdbgdbas

Ubuntu 18.04 でテスト済み。

于 2018-10-22T11:42:41.097 に答える