day_01_基本介绍

1、UC:unix下C开发

  1)系统调用 函数的使用方法
  2)操作系统原理、进程间的通信方式、线程间的同步机制、线程和进程的区别、任务调度策略

2、Linux系统

  Ubuntu、RedHat、Fedora…

3、书籍推荐

  《Unix环境高级编程》、《Linux程序设计》、《鸟哥私房菜》、《Linux网络编程》


一、基本介绍

1、具体内容:

开发环境、内存管理、文件操作、进程管理 进程间通信、信号处理、网络编程、线程管理
内核->系统调用->shell(壳)->应用程序

2、开发环境

2.1 unix / linux发展历程

  1970 贝尔实验室 unix
  GNU linux

2.2 重新审视编译工具gcc
  1)预处理
处理.c文件中以#开头的内容
例:gcc hello.c -E -o hello.i
  2)编译
由c变成汇编
例:gcc hello.i -S
  3)汇编
由汇编文件翻译成目标代码
例:gcc -c hello.s -o hello.o
  4)链接
把多个.o链接生成一个可执行文件
例:gcc hello.o -o hello
2.3 关于gcc重要参数:

  -c:只编译不链接
  -o:指定目标文件名称
  -E:预编译
  -S:产生汇编文件
  -g:产生gdb调试信息
  -Wall:产生尽可能多的警告信息
  -Werror:要求编译器将警告当作错误进行处理
  -I:(i大写)
  -L:指定库的搜索路径
  -l:使用的库文件的名称(L小写)
  -v:显示编译器的版本号 / 显示编译的全部过程

2.4 重新审视.c .h文件
  头文件作用是什么?什么内容放入头文件?
1)声明外部变量或者函数
  定义:int a;
  声明:extern int a;
2)宏定义 类型别名(tyoedef) 自定义数据类型
3)包含其他头文件
#include <>  //在系统指定目录下查找指定文件
#include ""  //先在当前目录下找,再查找系统目录
  系统目录:
/usr/include
  .h和.c没有在同一个目录下:
1)将.h文件放入系统头文件目录;
2)include “/path/xxx.h”
  相对路径(推荐)
  绝对路径
3)gcc … -Ipath
2.5 预编译指示符
#define 定义宏
#if 判定
#elif                   else if多选分支
#else                   
#endif                  结束判定
#ifdef                  判定宏是否定义
#ifndef                 判定宏是否定义
#error                  产生错误,挂起预处理程序
#warning                创建一个警告
#undef                  删除宏
#line                   指定行号

例:#pragma GCC poison goto
  .#pragma pack(1) 按1字节对齐
对齐:每个成员必须放在自己大小整数倍的位置上,如果自身大于4字节按4字节对齐。
补齐:每个结构体应该是最大成员的整数倍,最大成员超过4字节按4字节计算。

2.6 预定义宏

  __FILE__:指定源码所在文件 %s
  __LINE__:行数 %d // LINE所在的行号
  __FUNCTION__:当前函数名 %s
  __func__
  __TIME__:时间 %s // 编译时的时间
  __DATE__:日期 %s
  __cplusplus:c++有效

2.7 重新审视a.out

问题1:./a.out
  ls不用+路径
答案:环境变量 PATH:echo $PATH

问题2:printf()函数的定义在哪?

void printf(…)
{

}

答案:ldd ./a.out(在libc.so.6库中)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值