编译、链接、库(二)

2021-08-29  本文已影响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

参考

上一篇 下一篇

猜你喜欢

热点阅读