使用GCC和NASM在Linux下联合编译
2010-11-24 00:27
330 查看
使用GCC和NASM在Linux下联合编译
今天使用nasm和gcc一起编译了一个程序
先使用nasm编译一个asm文件为elf格式,汇编文件里面有全局global的_start和functionC,将来连接的时候用。其中还有extern用来表示外部C语言中的函数。
我的程序的调用结构: _start(ASM)->funB(C)->funC(ASM)
其中 ASM文件中:extern funB、global _start、global funC
C文件中声明:void funC();
函数参数的传递:使用push来传递地址
,而不是数值。最后参数的清理需要caller来自己解决。
需要的命令行:
nasm -f elf -o dest
.o src
.asm
gcc -c -o dest2
.o src2
.c (-c 的意思是仅仅compile)
ld -s -o final
.o dest
.o dest1
.o
今天使用nasm和gcc一起编译了一个程序
先使用nasm编译一个asm文件为elf格式,汇编文件里面有全局global的_start和functionC,将来连接的时候用。其中还有extern用来表示外部C语言中的函数。
我的程序的调用结构: _start(ASM)->funB(C)->funC(ASM)
其中 ASM文件中:extern funB、global _start、global funC
C文件中声明:void funC();
函数参数的传递:使用push来传递地址
,而不是数值。最后参数的清理需要caller来自己解决。
需要的命令行:
nasm -f elf -o dest
.o src
.asm
gcc -c -o dest2
.o src2
.c (-c 的意思是仅仅compile)
ld -s -o final
.o dest
.o dest1
.o
相关文章推荐
- 使用GCC和NASM在Linux下联合编译
- linux下gcc编译多个源文件、gdb的使用方法
- arm-linux-gcc交叉编译工具链的制作及使用
- Android 运行 C/C++程序 (使用 arm-linux-gcc 交叉编译环境)
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。
- 编译通过的U-boot和使用的arm-linux-gcc编译器
- 1.2.在linux环境实践,使用vim编写一个程序,然后使用gcc查看【预处理】、【编译】、【汇编】、【链接】各阶段文件的内容。并熟悉相关指令。
- Linux下使用gcc进行静态编译和使用动态链接库编译
- linux下gcc编译多个源文件、gdb的使用方法
- linux下使用gcc命令编译代码
- 【转】GCC和NASM联合编译
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库
- 使用嵌入式linux完全手册光盘的arm-linux-gcc 遇到问题 自己编译
- Linux基本使用(1)-使用GCC编译C语言程序
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。
- 在 Linux 使用 GCC 编译C语言共享库
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库
- 关于使用arm-linux-gnueabihf-gcc工具链编译多线程
- linux下使用gcc编译Nate Robin的OpenGL教程
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。