如何编译文件(gcc + nasm)
【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
版权声明:本文为博主原创文章,未经博主允许不得转载。
如何编译文件(gcc + nasm)的更多相关文章
- CentOS 6.4中升级编译安装GCC 4.8.1 + GDB 7.6.1 + Eclipse 以及Kdump配置
在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1 + Eclipse 今天在isocpp上看到"GCC 4.8.1 released, C++11 feature ...
- CentOS6编译安装gcc高版本
编译安装gcc高版本 因CentOS中gcc版本仅有4.4,故编译安装gcc高版本. 安装依赖库(如果你已安装过gcc低版本,可跳过这步) yum install glibc-static libst ...
- 编译安装GCC
下载GCC包 http://mirror.hust.edu.cn/gnu/gcc/ 解压 .tar.gzcd gcc-4.9.4./contrib/download_prerequisites #下载 ...
- CentOS编译安装GCC 4.9.2成功
在Linux上编译安装gcc是个寻烦恼的活,对于像我这样习惯于在Windows上面使用二进制安装包的人来说,自已编译安装gcc是个相当大的挑战,今天直接挑战最新版的gcc,是4.9.2版本的,做之前查 ...
- 详解C/C++ 编译 g++ gcc 的区别
我们在编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而c++代码用g++, 或者说编译用gcc,链 接用g++,一时也不知哪个说法正确,如果再遇上个ex ...
- 转:在CentOS下编译安装GCC
转:https://teddysun.com/432.html 在CentOS下编译安装GCC 技术 秋水逸冰 发布于: 2015-09-02 更新于: 2015-09-02 6519 次围观 ...
- CentOS6.5升级手动安装GCC4.8.2 与 CentOS 6.4 编译安装 gcc 4.8.1
http://blog.163.com/zhu329599788@126/blog/static/6669335020161179259975 http://www.cnblogs.com/codem ...
- 编译安装 gcc 4.9并验证使用
编译安装 gcc 4.9并验证使用 1. 准备环境(GCC 编译器) centOS 6.3 cat /proc/version Linux version 2.6.32-279.el6.x86_64 ...
- python3.6调用c语言动态编译文件 c语言编译可执行文件和动态编译等
1.c的代码 dfunc.c #include<stdio.h> int dgfunc(int n) { ){ ; }else{ )+dgfunc(n-); } } 2.动态编译 cmd ...
随机推荐
- 《手把手教你学C语言》学习笔记(7)---程序的输入与输出
程序设计中,为了观察程序的运行状态和结构,需要输出指定的内容:为了让程序能够更加灵活,可以根据需求输入内容,让计算机处理和运行:所以程序的输入输出就显的尤为重要.主要包括printf和scanf函数. ...
- C# 的 String.CompareTo Equals和==的比较
String.CompareTo 语法 public int CompareTo( string strB) 返回值 小于 0,实例小于参数 strB: 0,实例等于参数 strB: 大于 0, ...
- activity dialog生命周期
Android生命周期包括以下几个状态: onCreate(Bundle savedInstanceState):可以进行一些初始化的工作在activity第一次被创建的时候调用.这里是你做所有初始化 ...
- 迷宫问题(DFS,BFS)
/******************************** 啊哈!算法 深度优先搜索算法 迷宫问题 输入: 5 4 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 ...
- 洛谷 P2089 烤鸡【DFS递归/10重枚举】
[链接]:https://www.luogu.org/problemnew/show/P2089 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢? ...
- [Math Review] Linear Algebra for Singular Value Decomposition (SVD)
Matrix and Determinant Let C be an M × N matrix with real-valued entries, i.e. C={cij}mxn Determinan ...
- Swift 基础部分(建议掌握OC字符串知识的翻阅)
更新说明: Swift 目前已经发布到4.0版本了,以前写的这整个Swift学习系列的文章,有很多的不足之处,我会重新整理整个系列文章,也是相当于重新复习一遍Swift,后面系列文章的改动之处全都会做 ...
- Spring Cloud Stream介绍-Spring Cloud学习第八天(非原创)
文章大纲 一.什么是Spring Cloud Stream二.Spring Cloud Stream使用介绍三.Spring Cloud Stream使用细节四.参考文章 一.什么是Spring Cl ...
- 基于WPF系统框架设计(3)-Fluent Ribbon界面布局
一个系统框架除了功能菜单导航,有系统内容显示区域,系统状态栏. Silver: Blue: Black: 系统界面设计,就不进行技术细节介绍了,主题以框架设计为主,Xaml源码参考: <Flue ...
- Kali Linux信息收集工具全
可能大部分渗透测试者都想成为网络空间的007,而我个人的目标却是成为Q先生! 看过007系列电影的朋友,应该都还记得那个戏份不多但一直都在的Q先生(由于年级太长目前已经退休).他为007发明了众多神奇 ...