私は Ubuntu を使用しており、Linux 用のアセンブラー・コンパイラーを探していたところ、GAS を見つけました。
インストールして実行しようとしていますが、できません。
私は Ubuntu を使用しており、Linux 用のアセンブラー・コンパイラーを探していたところ、GAS を見つけました。
インストールして実行しようとしていますが、できません。
as
はGNU アセンブラーです。それはで見つかりましたbinutils
が、そうする場合:
sudo apt-get install build-essential
あなたは(バックエンドでの組み立てにデフォルトで使用される)とgas
仲良くなります。gcc
gas
の使用に関する「チュートリアル」については、それを使用する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 foo
foo.s
main
関連: x86-64 システムで 32 ビット プログラムを作成している場合は、64 ビット システム (GNU ツールチェーン) で 32 ビット バイナリを組み立てます。
binutils
パッケージに入っています。
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'.
http://www.faqs.org/docs/Linux-HOWTO/Assembly-HOWTO.htmlを読みましたか? on Debian GAS はパッケージに含まれています
ビンユーティリティ
それで
sudo apt-get install binutils
dpkg -L binutils
$man as
ソースからビルドして使用する
#!/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 でテスト済み。