美文网首页工具文章
C语言编译器和打包静态库

C语言编译器和打包静态库

作者: 一叶知秋0830 | 来源:发表于2019-07-01 08:37 被阅读0次

1.如何通过编译器编译执行c程序

创建c程序文件

vi test.c

编写程序

#include<stdio.h>
  
int main(int argc, char* argv[])
{
    printf("测试程序!\n");
    return 0;
}

编译程序

编写好程序后保存退出,在终端输入下面命令来编译程序,其中test是生成的可执行程序的名字,可以自己取,执行后可以看见所在目录里面多了一个test文件

clang -g -o test test.c

执行程序

输入下面命令可以执行生成的可执行程序

./test

打包静态库和调用静态库

准备要打包的程序

准备add.h和add.c文件,在头文件add.h中声明2个数相加的函数,在add.c中实现该函数。(由于没有main函数,所以这个文件时不能运行的)

//add.h文件
int add(int a,int b);
// add.c文件
int add(int a,int b)
{
    return a+b;
}

打包文件的编译

输入下面命令将要打包的文件进行编译,编译成功后会在所在目录多出一个add.o的文件

clang -g -c add.c

生成静态库

执行下面命令来生成静态库。执行完后所在目录会多出一个libqjlib.a静态库文件。
注意:libtool是Mac系统下打包静态库的工具;-static表示是静态库;qjlib是自己取的生成的静态库的名字,名字前面必须要加上lib;最后面是要打包的.o文件。

libtool -static -o libqjlib.a add.o

头文件的引用和函数调用

再次打开test.c文件,引入头文件add.h并在main函数中调用add函数(注意引入自己打包的库的头文件时用双引号而不是尖括号):

#include <stdio.h>
#include "add.h"

int main(int argc, char* argv[])
{
    printf("测试程序!\n");
    int sum = add(12,4);
    printf("%d\n",sum);
    return 0;
}

编译主程序

主程序保存退出后执行下面命令来编译主程序,
注意:这里编译和没有引入第三方库时的编译是不一样的,引入第三方库后需要设置库库文件的相关信息。-I(大写的i)后面是头文件路径,因为是在同一目录下,所以就是一个点;-L是库文件所在目录,目录和头文件一样;-l(小写的L)后面是库文件名字,-l和qjlib之间是没有空格的。编译完后就可以执行./test来执行了。

clang -g -o test test.c -I . -L . -lqjlib

相关文章

  • C语言编译器和打包静态库

    1.如何通过编译器编译执行c程序 创建c程序文件 编写程序 编译程序 编写好程序后保存退出,在终端输入下面命令来编...

  • Swift面试篇

    1.Swift与Objective-C的区别 SwiftOC语言特性静态语言动态语言静态语言由编译器做类型推断,一...

  • Ubuntu 20.04 LTS 安装GCC(C编译器 )

    GNU 编译器集合是一系列用于语言开发的编译器和库的集合,包括: C, C++, Objective-C, For...

  • 目录一、库二、静态库、动态库、Framework三、打包静态库 1、.a静态库和.framework静态库的区别 ...

  • C语言如何制作静态库_day88

    一般C语言写的程序可以让其他语言进行调用,比如python, java,等等 c语言有两种库类型,静态库和动态库(...

  • C语言中静态库和动态库的区别,如何使用它们

    一般C语言写的程序可以让其他语言进行调用,比如python, java,等等 c语言有两种库类型,静态库和动态库(...

  • iOS 打包动态库和静态库

    打包注意,真机下打包的静态库只能在真机下运行,模拟器下打包的静态库只能在模拟器下运行 1.打包.a静态库 在.h和...

  • ios -- Objc --Runtime(1) :理解 Ob

    C/C++ 属于静态的语言;而ObjC属于动态语言。什么是静态语言?就是在编译器编译后就调用函数地址,代码结构就固...

  • 创建静态库打包测试工程

    目标: 创建一个复合工程,将C,C++代码打包为.a静态库,并且能对静态库进行动态调试 步骤: 1.创建工程,选择...

  • iOS静态库与动态库的区别与打包

    iOS静态库与动态库的区别与打包iOS静态库与动态库的区别与打包

网友评论

    本文标题:C语言编译器和打包静态库

    本文链接:https://www.haomeiwen.com/subject/rccdcctx.html