zoukankan      html  css  js  c++  java
  • 关于cc -o命令

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

    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=4;
    void bb(){
    printf("das%d
    ",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

  • 相关阅读:
    python requests 上传excel数据流
    No module named 'requests_toolbelt'
    code
    pytest 打印调试信息
    python3 获取日期时间
    Java单元测试之JUnit篇
    The import junit cannot be resolved解决问题
    什么是索引
    python3 ini文件读写
    js 测试题
  • 原文地址:https://www.cnblogs.com/saolv/p/9649760.html
Copyright © 2011-2022 走看看