linux操作系统基础命令
来源:互联网 发布:发布订阅模式 java 编辑:程序博客网 时间:2024/06/05 20:23
GCC的知识要点:gcc的初衷是为GNU操作系统专门编写的一款编译器,GNU系统是彻底自由的软件。
gcc的基本用法:
gcc hello world.c -c,只编译,不链接成为可执行文件,编译器只是由输入的.c的源代码文件生成.o为后缀文件的目标文件,通常用于编译不包括主程序的子程序。
gcc hello world.c -o hello world 把hello world.c 编译成可执行文件 hello world 。
-g 是产生调试工具(GDB)所必须的符号资讯,要想对源代码进行调试,我们必须加入这个选项
-O 对程序进行优化编译,链接,采用这个选项,整个源代码会在编译,链接过程中进行优化处理,这样产生的可执行文件的执行效率会提高,但是在编译,链接的速度就相应的要慢一些。
预处理过程:这个过程处理宏定义和include,并做语法检查。
编译过程:这个阶段,生成汇编代码
汇编过程:这个阶段,生成目标代码
链接过程:链接过程,可生成可执行代码。链接分为两种,一种是静态链接,另一种是动态链接。
静态链接的好处是:依赖的动态链接库较少,对动态链接库的版本不会敏感,具有较好的兼容性;缺点是生成的程序比较大。占用内存大。
动态链接的好处是:生成的程序比较小,占用较少的内存。
gcc的使用口令:
gcc -o hello.c生成可执行文件。a.out
.(点)代表当前目录
cp -r /mnt/hgfs/share/gcc/.把gcc复制到当前目录。
time ./hello 测试可执行文件hello执行运算的时间。
gcc -O1 hello.c -o hello1进行一级优化
gcc -O2 hello.c -o hello2进行二级优化
gcc -w hello.c 关闭警告(-w)
gcc -Wall hello.c 开启全部警告(-Wall)
mv add.c ../ 把add.c调到上一级目录
静态库:是在程序执行之前就已经加入到执行文件的执行代码中,成为执行程序的一部分来执行的。后缀是(.a)
动态库:是在程序启动时加载到执行代码中,后缀是(.so)
静态库的优点:编译速度慢,执行速度快,可以提供多种可使用的变量,但是会使程序臃肿占用更多的内存,不利于升级,但是布局好
动态库的优点:编译速度快,执行速度慢,升级方便 布局差。
库的存放:
1:/lib/ 系统库
2:/usr/lib 程序库
不管是静态库还是动态库都是由(.o)后缀的文件生成的。所以先用gcc -c add.c gcc -c sub.c 生成add.o和sub.o文件 然后创建。
静态库的制作:由ar命令创建 例如:ar rcs libaddsub.a add.o sub.o 就可生成静态库libaddsub.a
就是 (ar rcs 静态库名 目标文件)。
调用静态库:gcc -o hello hello.c -laddsub编译hello.c就会把静态库整合进hello.c中生成调用静态库的可执行文件 hello
gcc hello.c -laddsub生成调用静态库的可执行文件a.out。
通过gcc -o main main.c -L. -laddsub编译
-L指定静态函数库的位置供查找,注意L后面还有'.',表示静态函数库在本目录下查找。
-l则指定了静态函数库名,由于静态函数库的命名方式是lib***.a,其中的lib和.a忽略。
根据静态函数库的特性,此处删除libaddsub.a后main依然可以运行,因为静态库的内容已经整合进去了。
动态库(共享库)的制作:gcc -shared -fPIC -o libaddsub.so add.o add.o
就是(gcc -shared -fPIC -o 动态库名 目标文件)
调用动态库:gcc -o out main.c -L. -laddsub 此时还不能立即./out,因为在动态函数库使用时,会查找/usr/lib /lib目录下的动态函数库,而此时我们生成的库不在里边。
这个时候有好几种方法可以让他成功运行:
最直接最简单的方法就是把libaddsub.so拉到/usr/lib 或/lib中去。
- linux操作系统基础命令
- Linux操作系统基础命令
- linux操作系统命令基础
- Linux操作系统基础命令、快捷键
- dba基础课程-linux操作系统:系统信息命令
- 有用的Linux操作系统的基础命令总结
- linux操作系统安装命令
- LINUX操作系统命令1
- linux操作系统命令大全
- linux操作系统之命令
- Linux操作系统基本命令
- Linux 操作系统基础
- Linux操作系统基础
- Linux操作系统基础1
- Linux操作系统基础
- 4linux操作系统基础
- linux笔记-操作系统基础
- linux基础操作系统
- SQL常用语句汇总
- ubuntu下安装可用的微信客户端&创建快捷方式
- IPC相机核心业务运行状态监控的重要性
- java解析excel文件为txt文件
- HTML笔记
- linux操作系统基础命令
- PHP之十六个魔术方法详解
- iOS 利用余弦函数实现卡片浏览工具
- 数据结构之二叉树求叶子节点
- 经典问题 平均数
- js+html迷宫心得
- C\C++,用不带头结点的循坏列表实现约瑟夫问题
- 关于potplayer启动慢的问题 只针对N卡用户
- main函数的参数问题