gcc
文章平均质量分 57
xiaopangcame
这个作者很懒,什么都没留下…
展开
-
GCC 编译使用动态链接库和静态链接库
1 库的分类根据链接时期的不同,库又有静态库和动态库之分。静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行。有别于静态库,动态库的链接是在程序执行的时候被链接的。所以,即使程序编译完,库仍须保留在系统上,以供程序运行时调用。2 静态库和动态库的比较链接静态库其实从某种意义上来说也是一种粘贴复制,只不过它操作的对象是目标代码而不是源码而已。因为静态库被链接后库就直接嵌入可执行文件中了,这样就带来了两个问题。首先原创 2021-07-18 11:14:38 · 1799 阅读 · 0 评论 -
GCC -l选项:手动添加链接库
标准库的大部分函数通常放在文件 libc.a 中(文件名后缀.a代表“achieve”,译为“获取”),或者放在用于共享的动态链接文件 libc.so 中(文件名后缀.so代表“share object”,译为“共享对象”)。这些链接库一般位于 /lib/ 或 /usr/lib/,或者位于GCC默认搜索的其他目录。当使用 GCC 编译和链接程序时,GCC 默认会链接 libc.a 或者 libc.so,但是对于其他的库(例如非标准库、第三方库等),就需要手动添加。GCC 的-l选项(小写的 L)..原创 2021-07-18 10:58:48 · 1269 阅读 · 0 评论 -
GCC -c选项:生成目标文件
[root@bogon demo]# lsdemo.c[root@bogon demo]# cat demo.c#include <stdio.h>int main(){ puts("Hello,World!"); return 0;}[root@bogon demo]# gcc -E demo.c -o demo.i[root@bogon demo]# lsdemo.cdemo.i[root@bogon demo]# gcc -S demo.i[root@b...原创 2021-07-18 10:17:59 · 522 阅读 · 0 评论 -
GCC -S选项:编译非汇编文件
[root@bogon demo]# cat demo.c#include <stdio.h>int main(){ puts("Hello,World!"); return 0;}[root@bogon demo]# gcc -E demo.c -o demo.i[root@bogon demo]# lsdemo.c demo.i在此基础上,本节继续讲解如何对已得到的预处理文件进行编译,将其再加工为相应的汇编文件。编译是整个程序构建的核心部分,也是最复杂的部分...原创 2021-07-18 10:12:24 · 212 阅读 · 0 评论 -
GCC -E选项:对源程序做预处理操作
通过为 gcc 指令添加 -E 选项,即可控制 GCC 编译器仅对源代码做预处理操作。值得注意的是,默认情况下 gcc -E 指令只会将预处理操作的结果输出到屏幕上,并不会自动保存到某个文件。因此该指令往往会和 -o 选项连用,将结果导入到指令的文件中。比如:[root@bogon demo]# gcc -E demo.c -o demo.i[root@bogon demo]# lsdemo.c demo.iLinux 系统中通常用 ".i" 作为 C 语言程序预处理后所得文件的后缀名。由此原创 2021-07-18 10:06:13 · 1071 阅读 · 0 评论 -
GCC编译C/C++程序(一步完成)
使用 GCC 编译器编译 C 或者 C++ 程序,也必须要经历这 4 个过程。但考虑在实际使用中,用户可能并不关心程序的执行结果,只想快速得到最终的可执行程序,因此 gcc 和 g++ 都对此需求做了支持。首先以运行 C 语言程序为例,给大家演示如何使用 gcc 快速获得对应的可执行程序。如下就是一段 C 语言程序//存储在 demo.c 文件中#include <stdio.h>int main(){ puts("hello world"); return 0;}..原创 2021-07-18 09:56:38 · 723 阅读 · 0 评论