1. ldd 可查看程序需要哪些动态库
命令 | 命令解析 |
nm | 可查看程序,库里有哪些函数 |
file | 可查看文件的类型 |
objdump -D | 反汇编.o/.a/.so/elf可执行文件 |
命令 | |
gcc test1.c -c -o test1.o | 编译为目标文件 |
gcc test2.c -c -o test2.o | 编译为目标文件 |
ar -cr libmy.a test1.o test2.o | 编译成静态库的方法 |
gcc test.c ./libmy.a -I 头文件的所在路径 | 使用静态库 |
命令 | |
gcc test1.c test2.c -shared -fPIC -o libmylib.so | 编译动态库 |
gcc test.c ./libmylib.so或者gcc test.c -L 库所在路径 -lmylib | 使用动态库 |
export LD_LIBRARY_PATH=库所在路径 | 发布动态库 |
在vim /etc/ld.so.conf中添加动态库的路径,然后执行ldconfig | 增加库的绝对路径 |
handle = dlopen(库路徑文件名, RTLD_LAZY);
dlsym(handle, "函数名"); //返回函数的地址
dlclose(handle);
gcc -rdynamic test.c -o test -ldl