王道训练营3月24日
制作排序动态库
1.全部编译但是不链接
1 gcc -fPIC -c ./src/heap_sort.c -o ./lib/heap.o -I./include 2 gcc -fPIC -c ./src/heap.c -o ./lib/heap.o -I./include 3 gcc -fPIC -c ./src/arr.c -o ./lib/arr.o -I./include 4 gcc -fPIC -c ./src/bubble.c -o ./lib/bubble.o -I./include 5 gcc -fPIC -c ./src/bubble.c -o ./lib/inseert.o -I./include 6 gcc -fPIC -c ./src/bubble.c -o ./lib/bubble.o -I./include 7 gcc -fPIC -c ./src/insert.c -o ./lib/insert.o -I./include 8 gcc -fPIC -c ./src/quick.c -o ./lib/quick.o -I./include 9 gcc -fPIC -c ./src/select.c -o ./lib/select.o -I./include
2.制作为lib库文件
gcc -shared -o libSort.so ./*.o
3.复制到库文件目录
sudo cp ./libSort.so /usr/lib/
4.编译时动态链接库文件即可
gcc -o sort sort.c -lSort
编写Makefile文件
Makefile编写格式如下
1 <target> : <prerequisites> 2 [tab] <commands>
上面第一行冒号前面的部分,叫做"目标"(target),冒号后面的部分叫做"前置条件"(prerequisites);第二行必须由一个tab键起首,后面跟着"命令"(commands)。
"目标"是必需的,不可省略;"前置条件"和"命令"都是可选的,但是两者之中必须至少存在一个。
每条规则就明确两件事:构建目标的前置条件是什么,以及如何构建。下面就详细讲解,每条规则的这三个组成部分。
*.c文件全部在src文件夹中,*.h文件放置在include文件夹中,可执行文件放在bin文件夹内。其中*.c存储排序函数,其中的test.c存储main函数,一同放入src文件夹中。
1 ./bin/main.exe:./src/arr.o ./src/buble.o ./src/select.o ./src/insert.o ./src/quick.o ./src/heap.o ./src/test.o 2 gcc -o ./bin/main.exe ./src/arr.o ./src/buble.o ./src/select.o ./src/insert.o ./src/quick.o ./src/heap.o ./src/test.o 3 ./src/arr.o:./src/arr.c ./include/arr.h 4 gcc -o ./src/arr.o -c ./src/arr.c -I./include 5 ./src/buble.o:./src/buble_sort.c ./include/arr.h ./include/sort.h 6 gcc -o ./src/buble.o -c ./src/buble_sort.c -I./include 7 ./src/select.o:./src/select_sort.c ./include/arr.h ./include/sort.h 8 gcc -o ./src/select.o -c ./src/select_sort.c -I./include 9 ./src/insert.o:./src/insert_sort.c ./include/arr.h ./include/sort.h 10 gcc -o ./src/insert.o -c ./src/insert_sort.c -I./include 11 ./src/quick.o:./src/quick_sort.c ./include/arr.h ./include/sort.h 12 gcc -o ./src/quick.o -c ./src/quick_sort.c -I./include 13 ./src/heap.o:./src/heap_sort.c ./include/arr.h ./include/sort.h 14 gcc -o ./src/heap.o -c ./src/heap_sort.c -I./include 15 ./src/test.o:./src/test.c ./include/arr.h ./include/sort.h 16 gcc -o ./src/test.o -c ./src/test.c -I./include