编译、链接、库(二)

目录

  • 静态库

  • 编译链接

  • 预编译

静态库

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

#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

参考

  • 程序员的自我修养

你可能感兴趣的:(编译、链接、库(二))