美文网首页
编译、链接、库(二)

编译、链接、库(二)

作者: 诺之林 | 来源:发表于2021-08-29 19:10 被阅读0次

目录

静态库

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

参考

相关文章

  • 编译、链接、库(二)

    目录 静态库[#%E9%9D%99%E6%80%81%E5%BA%93] 编译链接[#%E7%BC%96%E8%A...

  • android JNI 报错:error: undefined

    编译报错 报错原因:jnigraphics库没有动态链接 解决 Cmake编译解决添加动态链接库 jnigraph...

  • chap 7

    1. 静态链接;加载时共享库的动态链接;运行时共享库的动态链接。 2. 预编译 编译 汇编 链接 加载...

  • Protobuf的一个链接错误

    Xcode 中编译protobuf, 编译没有问题,上层库链接protobuf库的时候报6链接错误 : 排查:函...

  • Xcode打包静态库

    所谓的库就是一些程序代码的集合。库是已经编译好的二进制文件,编译时只需要链接一下,节省了编译时间。库分为静态库和动...

  • 静态库和动态库对ipa包影响

    一. 静态库和动态库 库是一种可执行的二进制文件,是编译好的代码。 静态库: 在程序编译过程中会被链接到目标代码里...

  • APP编译及加载过程

    编译过程 静态库&动态库 一.静态库在链接阶段,会将会将汇编生成的目标文件与引用的库一起链接打包到可执行文件中。二...

  • 2017-12-27 静态库与动态库的区别

    静态库与动态库的区别 1.首先理清楚编译链接期间文件的生成 预处理->编译->汇编-> 链接 .i -> .s -...

  • 编译、链接、库(一)

    Contents GCC Tools Object File Executable File Static Lin...

  • 编译链接动态库

网友评论

      本文标题:编译、链接、库(二)

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