一、为类型命名别名
struct node{
int num;
struct node *next;
};
typedef struct node node_t;
node_t n; 使用typedef为类型定义别名。
三个步骤:
、定义一个类型的变量或常量
、在第一步的基础上,在最前边加上typedef关键字,这时候,原来的变量或常量就是类型的别名(新类型)。
、使用新类型定义变量或常量。 举例说明:
、为int类型定义别名,count_t;
typedef int count_t;
count_t c;
、在系统中经常会出现下边情况
uint32_t;
typedef unsigned long uint32_t;
typedef unsigned short uint16_t;
、为指针类型定义别名
char *str_t;
变量 str_t 类型 *
typedef char *str_t;
str_t s,r;=====char *s,*r;
、为一个结构体类型定义别名
struct node{
int num;
struct node *next;
};
typedef struct node node_t;
typedef node_t *list_t;
list_t h;
list_t *n; 、为函数类型定义别名
int (*fun_t)(int,int);
fun_t 是变量
typedef int (*fun_t)(int,int);
fun_t 是类型的别名 指针类型 访问方式是int(int,int); typedef int t_add(int,int);
t_add 类型的别名 int (int,int);
t_add *f;
以昨天代码为例,演示类型的别名 、为数组类型命名别名
int arr_t[];
arr_t是常量
int [] 类型
typedef int arr_t[];
arr_t是类型的别名 int []
arr_t a; a是什么? a是一个一维数组。
arr_t b[];
验证数组的别名。代码参见 arr_alias.c 回调函数 二、环境变量
什么是环境变量?
操作系统为系统上运行的程序需要提供一个环境,在这个环境中有些资源的访问需要使用变量的形式提供,这就是环境变量。 bash交互窗口的环境变量。
程序和进程的区别?
程序是指令的集合。静态的。
进程是程序运行的实例。程序加载到内存运行起来,才是进程。
一个程序运行一次产生一个进程。每个进程都有自己的一个身份证号。这个编号专业术语称为PID。
环境变量是可以被子进程继承的变量。?
如何察看bash下的环境变量?
env
环境变量的格式:
name=value
切记等号的左右两边不允许出现空格 USER=tarena
如何访问环境变量的值?
$USER echo $USER
bash下有两种变量 自定义类型的变量 环境变量
自定义类型的变量不能被子进程继承?
而环境变量是可以被子进程继承的。?
如何为自定义变量赋初值?
NAME=beijing 自定义变量也就是当前bash私有的变量。
将自定义变量转换为环境变量
export 变量的名字 PATH PS1 PS1 这个环境变量是提示符资源的环境变量。
通过设置PS1环境变量就可以改变bash的提示符
export PS1="\W\$" 《鸟哥私房菜》
在bash启动的时候,会首先执行一个脚本程序。这个脚本程序中可以配置bash的环境变量。
文件的名字是~/.bashrc 在文件的末尾增加一行,内容是:
export PS1="\W\$" PATH:
察看PATH的内容:
UC$echo $PATH
/home/tarena/workdir/Android2./android-source/jdk1..0_16/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/home/tarena/workdir/linux-x86/sdk/android-sdk_eng.root_linux-x86/tools 以冒号作为分隔符,有多条路径。
export PATH=$PATH:. 三、静态库文件的制作和使用
静态库文件的命名 lib库名.a
函数库分为两种。静态库和动态库
静态库的制作和使用步骤(tmath文件夹)
、需要将添加到静态库的文件编译为目标文件
tmath$ls
add.c mul.c process.c t_math.h
tmath$gcc -c *.c
tmath$ls
add.c mul.c process.c t_math.h
add.o mul.o process.o
、将第一步生成的目标文件打包到静态库文件中
tmath$ar -r libpmath.a *.o
ar: creating libpmath.a
tmath$ls
add.c libpmath.a mul.o process.o
add.o mul.c process.c t_math.h
、使用静态库文件链接源文件生成可执行文件
gcc point.o -Ltmath -lpmath -o p 补充:
gcc的参数
-I路径 将路径添加到系统的指定的路径中。(搜索头文件的指定路径中) -L路径 这个路径是库文件所在的路径
-l库名 四、动态库的制作和使用
动态库文件的命名 lib库名.so 动态库的制作和使用步骤:
、将需要加入到动态库的文件编译成目标文件。(与位置无关的目标文件)
tmath$gcc -c -fPIC *.c
tmath$ls
add.c mul.c process.c t_math.h
add.o mul.o process.o 、将生成的目标文件打包到动态库文件中
tmath$gcc -shared -o libpmath.so *.o
tmath$ls
add.c libpmath.so mul.o process.o
add.o mul.c process.c t_math.h 、将源程序链接动态库文件,生成可执行文件。
day03$gcc point.c -Ltmath -lpmath -Itmath day03$a.out
a.out: error while loading shared libraries: libpmath.so: cannot open shared object file: No such file or directory 链接的时候 加载的时候
连接器 加载器
问题的原因是加载器找不到libpmath.so文件
a.out 程序依赖于动态库libpmath.so
如何察看你的可执行文件依赖哪些动态库?
ldd 可执行文件的名字 需要加载器找到这个库文件。
、使用环境变量告诉加载器动态库的搜索路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:tmath 、加载器和链接器都有默认路径。/lib或者/usr/lib 动态库和静态库的区别
使用静态库生成的可执行文件,静态链接的。可执行文件不再依赖于静态库。
使用动态库生成的可执行文件,动态链接的。可执行文件依赖于动态库。 动态链接是发生在程序加载到内存中的时候发生链接。
动态库也称为共享库。 可执行文件和动态库文件有效的隔离。
总结:
一、为类型定义别名
二、环境变量
三、静态库的制作和使用
四、动态库的制作和使用

为类型定义取别名、环境变量、静态库与动态库(day03)的更多相关文章

  1. Linux下Gcc生成和使用静态库和动态库详解

    参考文章:http://blog.chinaunix.net/uid-23592843-id-223539.html 一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库 ...

  2. Linux下Gcc生成和使用静态库和动态库详解(转)

    一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同( ...

  3. gcc创建和使用静态库、动态库

    http://www.cnblogs.com/dyllove98/archive/2013/06/25/3155599.html 目录树结构: test/include/hello.h #ifdef ...

  4. [转]Linux下用gcc/g++生成静态库和动态库(Z)

    Linux下用gcc/g++生成静态库和动态库(Z) 2012-07-24 16:45:10|  分类: linux |  标签:链接库  linux  g++  gcc  |举报|字号 订阅     ...

  5. Linux-Gcc生成和使用静态库和动态库详解

    一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同( ...

  6. Linux下GCC生成和使用静态库和动态库【转】

    本文转载自:http://www.cppblog.com/deane/articles/165216.html 一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本 ...

  7. gcc编译器创建和使用静态库、动态库

    http://www.cnblogs.com/dyllove98/archive/2013/06/25/3155599.html 目录树结构: test/include/hello.h #ifdef ...

  8. 【转】Linux下gcc生成和使用静态库和动态库详解

    一.基本概念 1.1 什么是库 在Windows平台和Linux平台下都大量存在着库. 本质上来说,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不 ...

  9. UNIX环境下用C语言写静态库与动态库

    静态库,动态库用UNIX 的术语来说,或者叫做归档文件(archive 常以.a 结尾)和共享对象(share object 常以lib 开头.so 结尾)更为准确.静态库,动态库可能是WINDOWS ...

随机推荐

  1. 2015 测试赛 同构 hihoCoder

    题目1 : 同构 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定2个树A和B,保证A的节点个数>=B的节点个数. 现在你需要对树A的边进行二染色. 一个好的染色 ...

  2. crm使用soap启用和停用记录

    function demo() {     //操作记录的id     var targetId = "a8a46444-ba10-e411-8a04-00155d002f02"; ...

  3. oc50--@class1

    // // main.m #import <Foundation/Foundation.h> #import "Person.h" int main(int argc, ...

  4. B1786 [Ahoi2008]Pair 配对 逆序对+dp

    这个题有点意思,一开始没想到用dp,没啥思路,后来看题解才恍然大悟:k才1~100,直接枚举每个-1点的k取值进行dp就行了.先预处理出来sz[i][j]  i左边的比j大的数,lz[i][j]  i ...

  5. B1391 [Ceoi2008]order 最大权闭合图 最小割

    啊啊啊,假的题吧!!!我用的当前弧优化T了6个点,其他人不用优化AC!!!震惊!!!当前弧优化是假的吧!!! 到现在我也没调出来...大家帮我看看为啥70.... 来讲一下这个题的思路,就是设一个源点 ...

  6. FFMS SQL文件执行错误

    [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 b ...

  7. 图结构练习—BFSDFS—判断可达性(BFS)

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2138 注意该图为有向图,1000个点应该最多有 ...

  8. Python 43 视图 、sql注入问题 、事务 、存储过程

    一:视图 1 视图是什么? 本质是一张虚拟的表,他的数据来自select语句 创建视图 create view test_view select *from t1; 2 有什么用? 原表安全 案例: ...

  9. 3.朴素贝叶斯和KNN算法的推导和python实现

    前面一个博客我们用Scikit-Learn实现了中文文本分类的全过程,这篇博客,着重分析项目最核心的部分分类算法:朴素贝叶斯算法以及KNN算法的基本原理和简单python实现. 3.1 贝叶斯公式的推 ...

  10. 前端Canvas思维导图笔记

    看不清的朋友右键保存或者新窗口打开哦!喜欢我可以关注我,还有更多前端思维导图笔记