网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- 通过配置gcc编译器的参数-Wl,-rpath指定;
- 通过LD_LIBRARY_PATH环境变量指定;
- 通过/etc/ld.so.conf指定,切记修改完ld.so.conf之后必须执行/sbin/ldconfig -v同步动态库;
- 默认搜素路径/lib、/usr/lib/指定;
同时,上述几种方式存在一定的搜索顺序,按照搜索的先后依次为:1 > 2 > 3 > 4>5。对于动态库的搜索路径的配置可以参考21aspnet的这篇博文。
依赖动态库的查看
我们可以通过ldd(x86环境)或者CROSS_COMPILE-readelf -d(ARM环境,CROSS_COMPILE为具体交叉编译前缀,-d 为读取动态库信息的参数)来分析相应平台下可执行程序所依赖的动态库的情况,我们可以举一例:
test.c:
#include <stdio.h>
void test()
{
printf("test()\n");
}
$ $(CC) -fPIC -c test.c //生成test.o,-fPIC(Position-independent code)为了生成位置无关的代码,一般用于动态库编译选项。
$ $(CC) -static -fPIC -o libtest.so test.o
extern void test();
main.c:
int main()
{
test();
return 0;
}
$ $(CC) -c main.c
$ $(CC) main.o -o main -L. -ltest
其中,CC代表不同平台的编译器;
通过,修改CC为gcc或者arm-linux-gnueabi-gcc分别生成X86、ARM平台下的main可执行程序,下面分别通过ldd和arm-linux-gnueabi-readelf查看main所依赖的动态库:
- X86:
ldd main
linux-vdso.so.1 => (0x00007ffc98f6a000)
libtest.so => /home/qihua/develop/linux/static_dynamic_libs/code/libtest.so (0x00007fe850df4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe850a10000)
/lib64/ld-linux-x86-64.so.2 (0x000055950a132000)
- ARM:
arm-linux-gnueabi-readelf -d main
Dynamic section at offset 0xf10 contains 25 entries:
标记 类型 名称/值
0x00000001 (NEEDED) 共享库:[libtest.so]
0x00000001 (NEEDED) 共享库:[libc.so.6]
0x0000000c (INIT) 0x10430
0x0000000d (FINI) 0x10590
0x00000019 (INIT_ARRAY) 0x20f08
0x0000001b (INIT_ARRAYSZ) 4 (bytes)
0x0000001a (FINI_ARRAY) 0x20f0c
0x0000001c (FINI_ARRAYSZ) 4 (bytes)
0x00000004 (HASH) 0x101ac
0x00000005 (STRTAB) 0x10300
0x00000006 (SYMTAB) 0x10200
0x0000000a (STRSZ) 200 (bytes)
0x0000000b (SYMENT) 16 (bytes)
0x00000015 (DEBUG) 0x0
0x00000003 (PLTGOT) 0x21000
0x00000002 (PLTRELSZ) 32 (bytes)
0x00000014 (PLTREL) REL
为了做好运维面试路上的助攻手,特整理了上百道 **【运维技术栈面试题集锦】** ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,**小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。**
![](https://img-blog.csdnimg.cn/img_convert/0e37af3e8713beeca62bfdd89a739d54.png)
本份面试集锦涵盖了
* **174 道运维工程师面试题**
* **128道k8s面试题**
* **108道shell脚本面试题**
* **200道Linux面试题**
* **51道docker面试题**
* **35道Jenkis面试题**
* **78道MongoDB面试题**
* **17道ansible面试题**
* **60道dubbo面试题**
* **53道kafka面试**
* **18道mysql面试题**
* **40道nginx面试题**
* **77道redis面试题**
* **28道zookeeper**
**总计 1000+ 道面试题, 内容 又全含金量又高**
* **174道运维工程师面试题**
> 1、什么是运维?
> 2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
> 3、现在给你三百台服务器,你怎么对他们进行管理?
> 4、简述raid0 raid1raid5二种工作模式的工作原理及特点
> 5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
> 6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
> 7、Tomcat和Resin有什么区别,工作中你怎么选择?
> 8、什么是中间件?什么是jdk?
> 9、讲述一下Tomcat8005、8009、8080三个端口的含义?
> 10、什么叫CDN?
> 11、什么叫网站灰度发布?
> 12、简述DNS进行域名解析的过程?
> 13、RabbitMQ是什么东西?
> 14、讲一下Keepalived的工作原理?
> 15、讲述一下LVS三种模式的工作过程?
> 16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
> 17、如何重置mysql root密码?
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**