【0】README

编译文件(nasm + gcc),特别是编译目标文件的依赖文件;本文旨在回顾 gcc 和 nams 编译器的编译命令,以及如果有多个依赖文件该如何编译;


【1】编译文件

1.1)编译 lib/syscall.asm(lib/syscall.asm)

nasm -I include/sys/ lib/syscall.asm -o syscall.o

1.2)编译 lib/string.asm(lib/string.asm)

nasm -I include/sys/ lib/string.asm -o string.o

1.3)编译 fs 的接口(lib/open.c + lib/read.c + lib/write.c + lib/close.c + lib/unlink.c)

[hadoop@hadoop0 c]$ gcc -M lib/open.c -I include/ -I include/sys (查找 lib/open.c 所依赖的文件)
open.o: lib/open.c include/type.h include/stdio.h include/type.h \
include/sys/const.h include/sys/protect.h include/string.h \
include/sys/fs.h include/sys/proc.h include/sys/tty.h \
include/sys/console.h include/sys/global.h include/sys/proto.h





gcc -I include/ -I include/sys -c -fno-builtin lib/unlink.c -o lib/unlink.o

1.4)编译MM 的 接口(lib/fork.c + lib/exit.c + lib/wait.c)

[hadoop@hadoop0 c]$ gcc -I include/ -I include/sys/ -c -fno-builtin lib/fork.c -o lib/fork.o
[hadoop@hadoop0 c]$ gcc -I include/ -I include/sys/ -c -fno-builtin lib/exit.c -o lib/exit.o
[hadoop@hadoop0 c]$ gcc -I include/ -I include/sys/ -c -fno-builtin lib/wait.c -o lib/wait.o

1.5)编译SYS 的接口(lib/getpid.c)

gcc -I include/ -I include/sys/ -c -fno-builtin lib/getpid.c -o lib/getpid.o

1.6)others (lib/misc.c + lib/vsprinf.c + lib/printf.c)

[hadoop@hadoop0 c]$ gcc -I include/ -I include/sys/ -c -fno-builtin lib/misc.c -o lib/misc.o
[hadoop@hadoop0 c]$ gcc -I include/ -I include/sys/ -c -fno-builtin lib/vsprintf.c -o lib/vsprintf.o
[hadoop@hadoop0 c]$ gcc -I include/ -I include/sys/ -c -fno-builtin lib/printf.c -o lib/printf.o

1.7)将上述目标文件编译为 C运行时库

[hadoop@hadoop0 c]$ ar rcs lib/orangescrt.a lib/syscall.o lib/printf.o lib/vsprintf.o \
> lib/string.o lib/misc.o lib/open.o lib/read.o lib/write.o lib/close.o \
> lib/unlink.o lib/getpid.o lib/fork.o lib/exit.o lib/wait.o

版权声明:本文为博主原创文章,未经博主允许不得转载。

最新文章

  1. java异常处理:建立exception包,建立Bank类,类中有变量double balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount),当取款的数额大于存款时,抛出InsufficientFundsException,取款数额为负数,抛出NagativeFundsException,如new Bank(100),
  2. C# FTP 命令无法获取ServerU目录列表问题
  3. Windows Store App 关键帧动画
  4. Android procrank , showmap 内存分析
  5. loadrunner做webservice接口之简单调用
  6. vc多文档应用程序窗口初始化,关闭子框架,标题,动态切换
  7. LeetCode-Add Two Binary
  8. Java基础知识强化75:正则表达式之分割功能(字符串中的数字排序案例)
  9. windows下给用非exe格式的文件安装网卡驱动
  10. scip习题(1) scheme和c实现的对比
  11. Spring Timer实现
  12. Python系列之Collections内置模块(2)
  13. CSS.03 -- 浏览器行高、字体;盒子模型--边框、内边距、外边距
  14. vue-cli webpack3扩展多模块打包
  15. 在Windows使用git工具将代码同步至github(作者:ying1989920)
  16. AStar算法()
  17. postman中常见的错误
  18. redis实现队列
  19. ⑤NuPlayer播放框架之GenericSource源码分析
  20. Liferay开发实战(1):入门

热门文章

  1. 转 网络编程学习笔记一:Socket编程
  2. mysql 连接远程服务器
  3. vmware tools安装过程
  4. hdu 2363(枚举+最短路好题)
  5. c# 扩展LINQ的order by函数支持通过字符串来指定列名并支持多列
  6. entity framework6 edmx文件详解
  7. 使用putty通过证书登录Linux
  8. Cocos 2d-X Lua游戏开发Mac环境搭建以及一点点感悟
  9. Java NIO中的Channel接口
  10. Protobuf C#