• 预处理、编译、汇编、链接

    image.png

    • GCC对各步骤的处理

    image.png

    • 制作动态库、静态库

    动态库:

    gcc -c -o test1.o test1.c gcc -c -o test2.o test2.c gcc -shared -o libtest.so test1.o test2.o

    使用动态库:

    gcc -o main mian.c -ltest -L /lib/test

    需要注意的是,动态库在编译过程中指定的路径并不一定是程序执行时动态库所在的路径,一般写入ELF文件的动态库目录主要是/lib /usr/lib这些,所以执行时需要把动态库文件拷贝到对应目录中(有一个参数可以设置elf文件的动态库目录)
    image.png
    参数LD_LIBRARY_PATH用于指定链接库路径(在开发板上执行)

    静态库

    gcc -c -o test.o test.c ar crs libtest.a test.o (可以使用多个.o 生成静态库)

    使用静态库

    gcc -o main main.c libtest.a (如果.a 不在当前目录下,需要指定它的绝对或相对路径)