编译链接总结

1. -L增加一个搜索路径,不一定要跟-l放在一起;不区别静态链接和动态链接。

2. 用-lxx与 libxx.a的区别是:前者会搜索多个路径。

3. 使用-lxx链接动态库时,动态库所在的目录不一定在搜索路径,可以加到/etc/ld.so.conf中,或者/etc/ld.so.conf.d/libxx.conf,并重启ldconfig。(ldd)

4. 动态链接库可以访问可执行程序内定义的函数,动态链接库可以相互访问函数,使用dlopen指定RTLD_GLOBAL。

5. 使用libxx.a与把xx.a中的所有.o列出来的区别是:前者以.o为单位找符号,如果整个.o中没有这个符号,则不链接进去,后者会将所有的。o都链接到可执行文件。

6. 编译动态库时gcc -c -fPIC xx.c, gcc -shared -o xx.so xx.o, export LD_LIBRARY_PATH=`pwd`

你可能感兴趣的:(总结)