这个命令很灵活,格式是:

cc -o 目标二进制可执行文件 文件1 文件2 文件3 。。。。。

其中目标文件后面的文件,可为源代码,也可为二进制文件,也可为库文件

比如:

//a.c
#include <stdio.h>
#include "b.h"
main(){
bb();
} //b.h
int a;
void bb(void); //b.c
#include <stdio.h>
#include "b.h"
int a=;
void bb(){
printf("das%d\n",a);
}

cc -c a.c;此命令生成a.o

cc -c b.c;此命令生成b.o

ar -crv libb.a b.o;此命令生成静态库文件

以下六中连接方式都是可以的,最终都生成了同样的可执行文件a:

cc -o a a.c b.c

cc -o a a.c b.o

cc -c a a.o b.c

cc -o a a.o b.o

cc -o a a.c libb.a

cc -o a a.o libb.a

以上都是将库文件直接复制到程序文件中,链接的文件既可以是.o文件,也可以是源代码文件,但是有一点特殊的是,当我们生成动态库的时候,就只能用源代码文件去生成动态库了,而不能用中间代码.o文件去生成,举个例子:

a.c是主程序源代码,a.o是编译后的二进制文件,生成动态库文件libb.so用下面的命令

cc -shared -fPIC -o libb.so a.c

而不能用cc -shared -fPIC -o libb.so a.o

关于cc -o命令的更多相关文章

  1. Linux安装Redis报错`cc:命令未找到`

    缺少gcc和gcc-c++的编译环境,安装即可. 可以联网情况下使用命令 yum install gcc yum install gcc-c++ 然后清理原来的残余文件 make distclean ...

  2. 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序

    很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用m ...

  3. C 语言学习 之搭建环境和熟悉命令

    Open Terminal 打开终端To run a command as administrator (user "root"), use "sudo <comm ...

  4. Vim进阶命令

    1. 查找    /xxx(?xxx)       表示在整篇文档中搜索匹配xxx的字符串, / 表示向下查找, ? 表示                    向上查找.其中xxx可以是正规表达式, ...

  5. 【C编程基础】make命令和makefile文件

    1.关于程序的编译和链接 一般来说,无论是C.C++首先要把源文件编译成中间目标文件即 Object File(windows为.obj文件,unix为.o文件),这个动作叫做编译(compile). ...

  6. 在Windows命令行中编译运行C/C++程序

    此处运行环境是在Windos下,运行cmd命令进入DOS界面 现在有一段简单C++代码(文件名为 demo.cpp),用于计算a*b的值 #include<iostream> using ...

  7. GNU Emacs命令速查表

    GNU Emacs命令速查表 第一章  Emacs的基本概念 表1-1:Emacs编辑器的主模式 模式 功能 基本模式(fundamental mode) 默认模式,无特殊行为 文本模式(text m ...

  8. make命令和makefile文件

    make命令和makefile文件的结合提供了一个在项目管理领域十分强大的工具,它不仅常被用于控制源代码的编译,而且还用于手册页的编写以及将应用程序安装到目标目录. makefile文件由一组依赖关系 ...

  9. Linux 究级基础入门命令整理

    Linux 究级基础入门命令整理 条条框框,三三两两,怎讷个这么多,哈哈!no zuo no die. 纯粹个人菜鸟笔记,望大神笑纳! 后续,未完!! 查看系统信息 uname -a - 查看内核/操 ...

随机推荐

  1. s-axis-config-tdata

  2. chapter4 module and port

    如果模块和外界没有交换信号,则可以没有端口列表. 端口隐含声明为wire,如果输出端口需要保存数值,则必须显式声明为reg,如需要保持数值知道下一个时钟边沿

  3. codeforces431B

    Shower Line CodeForces - 431B Many students live in a dormitory. A dormitory is a whole new world of ...

  4. docker --alpine包管理工具 --apk

    Alpine中软件安装包的名字可能会与其他发行版有所不同,可以在https://pkgs.alpinelinux.org/packages网站搜索并确定安装包的名称.如果需要的安装包不在主索引内,但是 ...

  5. Web api dynamic

    参考: ajax调用实例     <script>         var user = { name_CN: "haha", pwd: "123" ...

  6. MT【228】整数解的个数

    求方程$x+y+z=24$的整数解的个数,要求$1\le x\le 5,12\le y\le 18,-1\le z\le12$ 解:设$a_r$是方程$X+Y+Z=r$的满足上述要求的整数解的个数,那 ...

  7. HGOI 20190217 题解

    /* for me,开训第一天 /beacuse 文化课太差被抓去补文化课了... 看一眼题 : AK局? 但是,Wa on test #10 in problem C 290! (就差那么一咪咪) ...

  8. [luogu3505][bzoj2088][POI2010]TEL-Teleportation【分层图】

    题目大意 给出了一个图,然后让你加最多的边,让点\(1\)到\(2\)之间至少要经过5条边 解法 比较清楚,我们可以将这个图看作一个分层图,点\(1\)为第一层,再将\(2\)作为第五层,这样第一层和 ...

  9. Shell基础知识(四)

    字符串详解 字符串可以由 单引号/双引号/无引号 包围.如下所示 >> str1=hello str2="hello" str3='hello' << 三种 ...

  10. 洛谷 P4148 简单题 解题报告

    P4148 简单题 题意 维护单点加与矩形求和,强制在线 说明 \(n\le 500000,m\le 200000\),\(4000ms / 20MB\) kd-tree 复杂度我不懂 是一颗平衡树, ...