编译、链接、库(二)

目录

静态库

mkdir stack && cd stack
vim ble5.h
void hello();
vim ble5.c
#include <stdio.h>

#ifdef NOT_USE_DEFAULT

void ble5()
{
    printf("ble5 not default");
}

#else

void ble5()
{
    printf("ble5 default");
}

#endif
gcc -c ble5.c -o ble5.o

ar -rcs libble5.a ble5.o

编译链接

# 和stack平级目录
mkdir app && cd app
vim main.c
#include "ble5.h"

int main(void)
{
    ble5();
    return 0;
}
gcc main.c -o main
# main.c:1:10: fatal error: 'ble5.h' file not found

gcc main.c -I../stack -o main
# main.c:(.text+0xa): undefined reference to `ble5'
# collect2: error: ld returned 1 exit status

gcc main.c -I../stack -static -L../stack -lble5 -o main
./main
# ble5 default

预编译

cd ../stack

gcc -DNOT_USE_DEFAULT -c ble5.c -o ble5.o

ar -rcs libble5.a ble5.o
cd ../app

gcc main.c -I../stack -static -L../stack -lble5 -o main
# ble5 not default

参考

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、什么是编译器 简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)的程序。一...
    希尔罗斯沃德_董阅读 2,038评论 0 3
  • 目录结构保持一致,使得多人合作容易理解与管理,提高工作效率。Vue标准项目 #简要说明 main.js主入口,ro...
    Zxinli阅读 927评论 3 1
  • JavaScript编码规范 1 前言[https://github.com/yyued/fe-guide/blo...
    漫天_ed47阅读 281评论 0 0
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,709评论 1 180
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,112评论 0 4