首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    linux装载和启动可执行程序的过程

    罗军 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 基础知识 编译程序的过程 预处理...) 通过调用链接器ld来链接程序运行需要的一大堆目标文件,以及所依赖的其它库文件,最后生成可执行文件 静态链接和动态链接 静态链接是指在编译阶段直接把静态库加入到可执行文件中去,这样可执行文件会比较大。...在编译链接时,链接器并不能控制执行从一个可执行文件或者共享文件中转移到另一个中(这时候函数的地址还不能确定),因此,链接器将控制转移到PLT中的某一项。...在实际的可执行程序或者共享目标文件中,GOT表在名称为.got.plt的section中,PLT表在名称为.plt的section中。   ELF文件符号动态解析的过程 ?   ...load_elf_binary代码 load_elf_binary(struct linux_binprm *bprm) { …… if(elf_interpreter) //使用动态链接

    3.1K40

    【Linux】ELF可执行程序和动态库加载

    可执行程序格式   Linux操作系统上的可执行文件格式是ELF(Executable and Linkable Format)。...如下图所示: 因为目标文件.o也是ELF格式,那么将目标文件链接为可执行程序实际上就是将相同属性的section合并:   在Linux操作系统中,通过elf格式的可执行文件,操作系统可以读取文件中的节和段信息...这种文件格式的灵活性和可扩展性,使得Linux系统具有较强的兼容性和可移植性。 2....可执行程序加载   因为可执行程序在Linux内是以ELF格式呈现的,而ELF包含了程序的虚拟地址信息,所以程序在编译形成的时候其虚拟地址就已经确定好了;进程在运行程序时就会读取程序ELF信息来初始化mm_struct...中,因为动态库加载可能多个也可能不加载,所有Linux使用了一种灵活的数据结构来保存动态库的虚拟地址,该结构体实际上是一个链表,链接在mm_struct中的共享区中。

    13110

    Linux绝对路径和相对路径

    在 Linux 中,简单的理解一个文件的路径,指的就是该文件存放的位置。 只要我们告诉 Linux 系统某个文件存放的准确位置,那么它就可以找到这个文件。...我们知道,Linux 系统中所有的文件(目录)都被组织成以根目录“/”开始的倒置的树状结构 绝对路径一定是由根目录 / 开始写起。...系统一个文件名,它无法找到指定文件;而当将 bin 文件的绝对路径传递 Linux 系统时,它就可以成功找到。...举个例子,当我们使用 root 身份登录 Linux 系统时,当前工作目录默认为 /root,如果此时需要将当前工作目录调整到 root 的子目录 Desktop 中,当然可以使用绝对路径,示例代码如下...在linux中,确定文件位置,有绝对路径(absolute)与相对路径(relative)两种表示方法: 1.

    47230

    Linux下指定pip install安装路径、修改pip安装路径

    Linux下指定pip install安装路径、修改pip安装路径 在Linux下直接用pip install packageName,有些文件会被放到根目录下,如果没有sudo权限的话,是会安装失败的...需要注意的是,这个路径可能会因为操作系统版本、Python 版本、安装方式等因素而有所不同。...要修改pip安装目录,可以按照以下步骤操作: 在 Linux中,pip 的默认安装路径为 Python 的 site-packages 目录下。...具体来说,一般是在以下路径中: /usr/lib/pythonX.Y/site-packages/ 如果你不确定 pip 的安装路径,可以通过以下命令来查询,这个命令会显示 pip 的详细信息,其中包括...,可以使用 pip 的 --target 参数指定目标路径,例如: pip install --install-option="--prefix=绝对路径" packageName pip install

    75110
    领券