首页
学习
活动
专区
工具
TVP
发布

linux 什么SO文件

so其实就是shared object的意思。今天看了上面的博客,感觉好吃力。赶紧做个笔记记录一。...下面的内容大多都是连接中的,穿插我自己的笔记 牵扯到ELF格式,gcc编译选项待补,简单实用的说明一,对Linuxso文件有个实际性的认识。 1.so文件是什么?...2.怎么生成以及使用一个so动态库文件? 3.地址空间,以及线程安全. 4.库的初始化,解析: 5.使用我们自己库里的函数替换系统函数: 1.so文件是什么?...这个特性使得在Linux,升级使得共享库的程序和定位错误变得十分容易。   ...下面的还没细看,汗 4.库的初始化,解析: windows的动态库加载,卸载都会有初始化函数以及卸载函数来完成库的初始化以及资源回收,linux当然也可以实现。

5.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

linuxso、o、lo、a、la文件的区别

使用libtool解决编译问题看上去没什么问题:库的名称、路径、依赖都得到了很好的解决。但下结论不要那么着急,一个显而易见的问题就是:并不是所有的库都是libtool编译的。...由于liba.so依赖于libb.so(这种依赖可以readelf读liba.so的ELF文件看到),而上面的命令行中,并没有出现libb.so,于是,可能会出现问题。...说“可能”,是因为如果在本地编译的情况,gcc在命令行中找不到一个库(比如上面的liba.so)依赖的其它库(比如libb.so),链接器会按照某种策略到某些路径下面去寻找需要的共享库: 1....$ unicore32-Linux-gcc –o myprog /usr/lib/liba.so \ -Wl,–rpath-link -Wl,/home/UNITY_float/install/usr/...libtool中有一个变量“hardcode_libdir_flag_spec”,该变量本来是传递“-rpath”选项的,但我们可以修改它,添加我们需要的路径,传递给unicore32-linux-gcc

8.3K30

Linux动态库(.so)和静态库(.a) 的区别

静态库和动态库的最大区别,静态情况,把库直接加载到程序中,而动态库链接的时候,它只是保留接口,将动态库与程序代码独立,这样就可以提高代码的可复用度,和降低程序的耦合度。...  hello.o  libHello.a  main.cpp  Out1 hc@linux-v07j:~/weiming/tt> ldd Out1         linux-gate.so.1....6 => /lib/libc.so.6 (0xb7ce3000)         /lib/ld-linux.so.2 (0xb7f1b000) 二: 动态库 这类库的名字一般是libxxx.so...替换-shared选项 调用动态库 隐式调用动态库 /**************  main.cpp *********************/ void print(); //或者#.../libd.so (或者g++ -o dOut main.cpp -L./ -ld) hc@linux-v07j:~/weiming/tt/dd> ldd dOut         linux-gate.so

16.3K21

什么在 Windows Ctrl+Z 退出 Python 而 Linux Ctrl+D 呢?

Linux 进入了 python 交互模式 当我们想退出 python ,返回我们的 shell 时,你将如何退出?...而这个操作在 Windows 和 Linux 两个平台是不同的——前者使用 Ctrl + z 而后者使用 Ctrl + d 。但是,为什么不同呢?...EOF 实际上就是 -1 : #define EOF (-1) C 语言之父肯·汤普森与丹尼斯·里奇恰好也是 Unix 的缔造者,而 Unix 深远地影响了操作系统的发展:无论是 Windows 还是 Linux...测试平台 AcWing 但注意,-1 并不是数值对象,而就是 -1 这个输入值,我们无法通过键盘上的 -1 直接键入,如果想要键入 -1 ,那么就需要: 在 Windows 上键入 Ctrl + z 在 Linux...上键入 Ctrl + d 所以,你也就知道为什么 在 Windows Ctrl+Z 退出 Python 而 Linux Ctrl+D 了吧!

2.4K20

Linuxso动态库一些不为人知的秘密

基本上每一个linux 程序都至少会有一个动态库,查看某个程序使用了那些动态库,使用ldd命令查看 ? 这么多so,是的。...使用ldd显示的so,并不是所有so都是需要使用的,下面举个例子: main.cpp ? 使用缺省参数编译结果 ? 如果我链接一些so,但是程序并不用到这些so,又是什么情况呢?...所以必定会影响进程启动速度,所以我们最后不要把无用的so编译进来,这里会有什么影响呢?...呵呵,办法很简单省事吧,本文主要讲so依赖的一些问题,下面将介绍so的路径方面一些不为人知的小秘密。 库路径不为人知的小秘密 我们知道Linux链接so有两种途径:显示和隐式。...(0x00007f53ed30f000) 绝对路径虽然申请设置环境变量步骤,但是缺陷也是致命的,这个so必须放在绝对路径,不能放到其他地方,这样给部署带来很大麻烦。

3.9K20

Linux core dump有什么

进程崩溃时,Linux会将崩溃前进程的内存状态保存在core文件里,就像保存了案发现场的照片,可以帮助开发人员找到事故原因,修复程序。本文简单的例子讲解如何根据core文件,定位进程崩溃的原因。...ulimit -a查看系统对core文件的设置 ? core file size设置是0,也就是不允许core文件产生。 修改配置,改为unlimited,对大小不做限制。 ?...gdb执行bt和where可以看见令程序崩溃的代码位置,但是现在只能看见main函数,看不见其它具体信息。这是因为编译代码时没有加入调试信息,g++加入调试信息的参数是-g ? ?...file core.* 可以正确指出core文件出自哪个可执行文件(无论可执行文件是什么,哪怕是java,Python,都是一样的操作),然后gdb 可执行文件 core.*,可以查看错误原因。 ?

6K11

linuxtar进行数据备份

豌豆贴心提醒,本文阅读时间7分钟 本机上数据的手工备份 Linux系统上配有功能强大的tar命令,可以灵活地备份数据。...tar非常易于使用稳定可靠,而且在任何 Linux系统上都有这个命令。因此是最经常使用的备份工具。...Linux为我们提供了强大的工具来进行自动备份。这就是cron。 cron是一个后台进程,一旦启动,将根据自己的配置文件定时地执行任务。...每行由6个域组成: 分钟小时每月的天月星期命令 上述6个域之间空格或Tab分开,其中: 分钟:分钟域,值的范围是0到59 小时:小时域,值的范围是0到23 每月的天:日期,值的范围是1到31 月份:月份...好了,这样只要Linux服务器不关机,每天凌晨3:00cron都会自动启动backup.sh脚本来对数据进行备份的。你就可以高枕无忧了。

2.5K80

开机键,Linux做了什么

Windows和Linux各自有自己内核。狭义的操作系统就是指内核,广义的操作系统包括内核以及内核之上的各种应用。 (Linus Torvalds与其说是Linux之父,不如说是Linux 内核之父。...他依然负责Linux 内核的开发和维护。至于Ubuntu, Red Hat, 它们都是基于相同的内核之上,囊括了不同的应用和界面构成的一个更加完整的操作系统版本。)...小结:BIOS -> MBR -> 引导加载程序 -> 内核 内核 如果我们加载的是Linux内核,Linux内核开始工作。...它是Linux系统中的1号进程(Linux系统没有0号进程)。到此,内核就完成了在计算机启动阶段的工作,交接给init来管理。...在此模式,初始脚本还没有开始执行,我们可以检测并修复计算机可能存在的错误) 随后,init会运行一系列的初始脚本(startup scripts),这些脚本是Linux中常见的shell scripts

1.3K30

WindowsBochs编译运行Linux-0.11

点击打开链接http://oldlinux.org/Linux.old/bochs/linux-0.11-devel-040329.zip 2、解压linux-0.11-devel-040329.zip...4、安装完毕后,将所有linux-0.11-devel-040329的文件,拷贝到刚才安装bochs的根目录。原目录如下: ? ? 拷贝过后目录为: ?...这已经是x86PC模拟器上,搭建完成的Linux操作系统。建立linux操作平台命令,就能操作Linux。...由于学习操作系统需要,我们需要在Linux,编译操作系统以及完成简单的源码修改,从而达到理解Linux内核的能力。接下来,主要演示Linux内核源码的修改,以及内核的编译过程。...3、依次修改:/linux/Makefile、/linux/fs/Makefile、/linux/lib/Makefile、 /linux/kernel/Makefile、/linux/kernel/

3.4K20
领券