一台装有Linux操作系统的电脑
静态库和动态库的区别主要在于链接时间上的不同:静态库中的代码在编译过程中就被载入到程序中,而动态库是在程序执行到这个需要的函数时,才会从函数库中调用出来。
它们各有各自的优缺点,静态库执行程序时不需要操作系统中的函数库支持,而动态库则需要操作系统的函数库支持。如果静态库更新改变,你用静态库的程序必须重新编译,动态库则不用,只更新操作系统中的函数库就可以。用静态库的程序文件庞大,用动态库的程序文件相对小巧。
这次还是以打印 hello world! 的函数实例做介绍:先建立一个printHello.h头文件,再建立一个printHello.c文件,然后用命令:gcc -fPIC -c printHello.c -o printHello.o 编译生成二进制执行文件printHello.o,用命令:
gcc -shared printHello.o -o libHello.so打包成函数库文件 libHello.so
先打开 /etc/ld.so.cache 这个文件,在里面添加你新建动态库所在的路径(比如我的路径是:/home/wht/Desktop/)。再用 ldconfig 命令更新/etc/ld.so.cache 文件这个文件。
用vim 新建一个main.c文件,然后用参数 -L 指定用你自己的动态库文件编译 main.c 文件:gcc main.c -o print -L ./ -lHello 。最后运行这个print执行文件。