我正在尝试学习 autoconf 并尝试使用它来创建构建脚本,以编译用 Gnu Assember(GAS) 编写的汇编语言程序。
下面是我的configure.ac
AC_INIT([hello], [0.01]])
AC_CONFIG_SRCDIR([hello.s])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([-Wall -Werror])
AC_CONFIG_FILES([Makefile])
AM_PROG_AS
AC_OUTPUT
下面是 Makefile.am
bin_PROGRAMS = hello
hello_SOURCES = hello.s
.hello.o:
as -gstabs+ $< -o $@
下面是 hello.s 程序
.section .text
.globl _start
_start:
pushl $3
pushl $2
call foo
movl $1, %eax
int $0x80
.type foo, @function
foo:
movl 4(%esp), %eax
movl 8(%esp), %ebx
addl %eax, %ebx
ret
当我运行 autoreconf -ii 看到这个:
configure.ac:6: installing `build-aux/install-sh'
configure.ac:6: installing `build-aux/missing'
运行 ./configure 脚本
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for style of include used by make... GNU
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... none
checking dependency style of gcc... none
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
当我运行 make install 它失败并出现以下错误:,我想使用“as”而不是 gcc 来组装汇编语言。
[foobar]$ make install
gcc -g -O2 -c -o hello.o hello.s
gcc -g -O2 -o hello hello.o
hello.o: In function `_start':
/home/ashok/practice/ia32/myasm/autotools/foobar/hello.s:4: multiple definition of `_start'
/usr/lib/gcc/i686-redhat-linux/4.4.7/../../../crt1.o:(.text+0x0): first defined here
/usr/lib/gcc/i686-redhat-linux/4.4.7/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [hello] Error 1
我希望 autoconf 使用“as”GNU 汇编程序而不是 gcc 来编译汇编程序。我如何覆盖不使用 gcc。