|
一个简单的 Hello Wrold 程序.
[code:1]
; hello.asm
section .data ; 数据段声明
msg db "Hello, world!", 0xA ; 要输出的字符串
len equ $ - msg ; 字串长度
section .text ; 代码段声明
global _start ; 指定入口函数
_start: ; 在屏幕上显示一个字符串
mov edx, len ; 参数三:字符串长度
mov ecx, msg ; 参数二:要显示的字符串
mov ebx, 1 ; 参数一:文件描述符(stdout)
mov eax, 4 ; 系统调用号(sys_write)
int 0x80 ; 调用内核功能
; 退出程序
mov ebx, 0 ; 参数一:退出代码
mov eax, 1 ; 系统调用号(sys_exit)
int 0x80 ; 调用内核功能 [/code:1]
把上面的程序保存为test02.asm
[sihan@localhost test]$ nasm -f elf test02.asm
[sihan@localhost test]$ ls
test02.asm test02.o
[sihan@localhost test]$ gcc -o test02 test02.o
test02.o(.text+0x0): In function `_start':
: multiple definition of `_start'
/usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o(.text+0x0): first defined here
/usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o(.text+0x1: In function `_start':
: undefined reference to `main'
collect2: ld returned 1 exit status
请问这是什么错误??
(2)
怎么加入调试信息? 是用 GDB 调试吗?? |
|