Welcome 微信登录

首页 / 操作系统 / Linux

Linux下查找一个函数在哪个库文件中

Linux下查找一个函数在哪个库文件中

关于怎样查出一个库函数到底在哪个库文件中,我想到一个变通的办法,以查找fcntl函数在哪个库文件中为例吧: 1、找到一个使用fcntl的可执行文件,如test_fcntl。实在不行,自己编一个只有fcntl函数的c文件,然后编译一下得了。 2、使用“ldd test_fcntl”命令,可以追踪出该可执行文件到底使用了哪些库文件。通常可能有几个到几十个。 3、根据要查找的函数的作用和上一步所得到的各库文件的名字大致推测一下,该函数可能会在哪个或哪些库中...
学习下Linux中的库

学习下Linux中的库

soname 形式一般为lib.so.,以symbol link的方式存在于文件系统中,version的不同反映了接口的改变,其指向的实际文件的名字通常是在soname后加上..。 ldd/ldconfig 一个程序/shared库一般都要依赖其他的一些库,这可以用ldd来查看,它列出了依赖的库的soname,因为实际依赖是库的接口,而soname正是反映了库的接口信息。linux使用ELF作为可执行程序和库的格式,这些依赖的库的soname保存在...
在Linux编程中使用gcc

在Linux编程中使用gcc

为了了解linux的内核,使用vmware装了个Debian Linux。由于用惯了windows 一下子还改变不过来思维习惯(windows真是害人不浅啊^_^)。哈哈,装了后先写个c程序热热身,找了半天gcc竟然没装(因为是只装了debian的基本系统),那就先装个gcc吧。使用linux自带的软件管理器,插入安装盘,找到gcc,点击apply即可(看似简单的一句话,花了我n久时间啊)。 接下来使用vim写个test.c。vim的使用又有很多要学,不...
Linux下共享库的建立

Linux下共享库的建立

大多数LINUX程序都使用共享库。如果你感觉不到的话,大多数的C程序要用到的共享库libc.so.X,其中X是版本号。 1、检查程序的共享库 用ldd程序可以查询可执行程序所需要的共享库。下面是对一个用gcc2.96编译器编译的一般C程序做的查询(该程序使用的是ELF二进制格式): ldd a.out libc.so.6 => /lib/libc.so.6 (0x4003a000) /lib/ld-linux.so.2 => /lib/ld-l...
关于Linux下/sbin/init程序的执行过程

关于Linux下/sbin/init程序的执行过程

当init启动后,它通过执行各种启动事务来继续引导进程(检查并监视文件系统,启动后台程序daemons,等等),直至完成用户所有操作环境的设置工作。这里主要涉及4个程序:init、getty(agetty)、login和shell程序。 init进程的主要任务是根据/etc/rc文件中设置的信息,执行其中设置的命令,然后根据/etc/inittab文件中的信息,为每一个允许登录的终端设备使用fork()创建一个子进程,并在每个新创建的子进程中运行age...
Linux下的C++编程初识

Linux下的C++编程初识

Linux下C++编程和在Windows下的没有什么两样,它同样需要编译、链接、调度、运行等步骤,只不过执行这些步骤在两种操作系统下所做的不是同样的事情。 在Windows下有TC, BC, VC等编译器,它们极大地方便了程序的编辑编译等,在Windows下你只需要看明白菜单就可以了。而在Linux下是Gcc, G++, Gdb等工具,刚开始时你可能甚至不知道如何下手去调试程序,你也可能甚至不知道程序在哪里编辑。不过这些都不是问题,慢慢来我们都能行! ...
Linux下运用GDB来调试程序的方法

Linux下运用GDB来调试程序的方法

在Linux下调试程序一般用GDB来执行。 这里简要介绍一下是否gdb调试程序的方法: (1)进入gdb调试: gdb + 已经编译通过的可执行程序 -》 就进入调试模式。例如:gdb MiddlePublisher (2)r + 运行时的参数 -》 开始运行可执行程序。例如 r -lxml2 -f refile (3)b + 断点 -》设置调试的断点。两种:一种是:b CMSTask.cpp:200 表示在CMSTask.cpp文件的第200行...
详解Linux平台下的Oracle数据库编程

详解Linux平台下的Oracle数据库编程

1.引言 由于PL/SQL不能用来开发面向普通用户的应用程序,必须借助其他语言或开发工具。在Linux操作系统下应该用什么语言或开发工具来进行Oracle数据库应用的开发呢?本文将介绍2种方案:Pro*C、JDBC。而另一种SQLJ方法,限于篇幅省略。 2. 环境设置 2.1 软件环境 本文的实验环境是在Red Hat Linux 8.0操作系统下,因为Oracle 9i要求至少512MB内存,所以我们选择Oracle 8.1.7.0.1作为数据库环...
Linux系统内存产生错误的原因与调试方法

Linux系统内存产生错误的原因与调试方法

总而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的gdt表,后13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,指向的gdt是由以64位为一个单位的表,在这张表中就保存着程序运行的代码段以及数据段...
linux so 库的深入理解

linux so 库的深入理解

经常见有人提起关于库的种种问题,今天我也终于按捺不住,根据自己的经验,实验,学习中得到的一些,来说说自己的一点看法.我们都知道库对系统的重要.没了它,系统几乎无法运转,包括LFS整个过程至少是对工具链调整来调整去的过程是以对库的倚赖为核心的.这其中又以动态库为精华.那先来说简单的静态库.它简单到只是ar打包的目标文件的集合罢了,于是,它的作用也就和目标文件没什么区别了,链接进目标文件,ok,使命完成,至于程序以后的事包括运行则和这个静态库没有关系了.其实我...
利用Shell脚本来实现vi/cp/mv前自动备份源文件

利用Shell脚本来实现vi/cp/mv前自动备份源文件

以下脚本把所有要编辑的源文件备份到/bak目录下,并且所有的路径位置保持不变,比如vii /etc/hosts,则把/etc/hosts复制到/bak/etc/hosts。 # cat /sh/vii #!/usr/bin/bash #判断源文件是否存在,存在才执行备份操作 if [ -f "$1" ];then #创建函数,可实现任意键继续 #如果你的机器上不认stty raw那么把函数中两处出现的raw换成cbreak get_char() { SAV...
用apt-get来卸载ubuntu Linux旧内核

用apt-get来卸载ubuntu Linux旧内核

使用Ubuntu一段时间后,就会发觉由于自动升级,系统里安装了很多内核。像我,竟然安装了下面那么多,这个造成了漫长的启动列表。必须删掉一些不用的。首先就是使用如下命令,列出所有安装的内核,下表中,带有image的就是内核文件。从中选择要卸载的包,用apt-get来卸载[tc@ibm:~]$ dpkg --get-selections|grep linuxlibselinux1 installlinux-386 installlinux-image-2.6....
<< 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 >>