【如何覆盖Linux下elf可执行文件的.interp标头中指定的链接器?】教程文章相关的互联网学习教程文章

linux – 如何将动态链接的应用程序转换为静态链接?

我有一个应用程序,比如gedit,它是动态链接的,我没有源代码.所以我不能像我喜欢的那样编译它.我想要做的是使其静态链接并将其移动到没有必要的库来运行该应用程序的系统.那么有可能做到这一点以及如何做到这一点?解决方法:理论上这是可能的.您基本上必须完成与动态链接器相同的工作,并进行一些修改,即 >转储原始文件中的所有部分>解决符号>找到图书馆>而不是将它们加载到内存中,将它们组装成“虚拟图像”>解决内部链接>将整个事物转...

如何列出Linux中所有命名空间中的所有网络链接【代码】

据我所知,在Linux shell环境中,我可以使用ip列出任何特定命名空间中的网络链接,例如: ip netns exec< namespace> ip link show 我的问题是: 如果我有多个网络命名空间,如何使用简单的命令列出所有命名空间中的所有链接?或者我必须写一个脚本来这样做? 谁知道这个? 提前致谢. 没有人有同样的问题?解决方法:你可以简单地做:ip link show; ip -all netns exec ip link show在内部,这只是你的脚本会做什么 – 它遍历所有命名空间...

linux – 创建与其他文件相关的符号链接

我知道我的主题有点令人困惑,但这就是我想要做的. 我有一个文件,我想创建一个链接到我的家?/ bin,但是当我运行该文件(shell脚本)时创建该文件的链接时,该文件需要在其目录中的另一个文件.因此,它无法运行,因为它找不到其他文件.我能做什么? 谢谢解决方法:那么,你有两个简单的解决方案. >编辑shell脚本以指向文件的绝对路径,而不仅仅是基本名称. ./path/to/file.sh VS file.sh 所以这样的事情应该做你的事. sed -i的| file.sh ...

linux – crt *文件在链接中的作用是什么?

我们有几个crt *文件,比如/build/csu/crt0.o或/build/csu/crti.o或/build/csu/crtn.o或/build/csu/crtbegin.o或`/ build / csu / crtendS .o在构建时与gcc一起使用. 有人能清楚地解释一下这些文件的作用和功能是什么吗?解决方法:crt文件包含运行时 – 这是调用主函数,处理程序终止的代码,以及有关如何布局函数的一些指令.这是一个mini FAQ.

链接到共享库Linux

共享库是共享的,因为它们是从磁盘上的同一文件加载的,还是共享的,因为它们被加载到内存中一次并且每个人共享相同的内存区域?在Linux中,它们被加载一次并虚拟映射到每个进程空间吗?这是如何运作的? 编辑:当我说共享我认为我的意思是动态链接,但如果有差异请告诉我.解决方法:通常是后者(尽管$LD_PRELOAD更改了这一点;有关详细信息,请参阅ld.so(8)手册页,ENVIRONMENT部分). CPU TLB用于将库的页面映射到应用程序的进程空间.

linux – 无法将应用程序与mudflap链接【代码】

我的应用程序使用我的共享库.必须对应用程序和库进行混淆,以检查超出堆栈和堆的读写区域.共享库已成功构建,但在链接应用程序时,我遇到了很多错误. 我做了一个简单的例子来重现这个问题.以下是重现的步骤: >使用2个文件创建C动态共享库项目:h和cpp文件包含一些类,在h或cpp文件中使用#include< iostream>>创建使用此库的C应用程序(使用共享库中的类)>构建库>构建应用程序(这里你会发现链接错误) 这是我的文件: SharedLibTest.h#if...

linux – 链接器删除传递给它的目标文件上的字符?【代码】

我似乎在Windows机器上使用ARM-Linux交叉编译遇到了一个奇怪的异常现象.我正在使用从Mentor Graphic网站获得的Sourcery CodeBench Lite Edition(arm-none-linux-gnueabi-gcc). http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/ 以前,我使用arm-linux编译器在Ubuntu机器上构建了我的代码(sudo apt-get install g -arm-linux-gnueabi -y || gcc-arm-linux-gnueabi).这里的工具工作...

Linux软链接的创建,删除,修改【图】

Linux软链接,类似于windows系统的快捷键。譬如你将windows系统的D盘中某一个文件夹放在桌面上当做快捷键。 一、软链接创建 1、创建软链接 ln -s 【目标目录】 【软链接地址】 【目标目录】指软连接指向的目标目录下,【软链接地址】指“快捷键”文件名称,该文件是被指令创建的。如下示例,public文件本来在data文件下是不存在的,执行指令后才存在的。 示例: 结果: 2、软链接创建需要同级目录下没有同名的文件。就像你在windo...

c – 在Linux上链接共享库和未解析的符号【代码】

我有以下三个项目: >主机:导出全局变量的可执行文件(声明为extern)>插件:由Host加载并引用全局变量的运行时库>工具:链接插件并使用它的一些功能的可执行文件.它不以任何方式引用全局变量. 现在,如果我在Windows上构建它,一切都很好.该工具只链接到插件的导出库,不会尝试解析全局变量. 在linux上我遇到了一个问题.该工具尝试链接插件.so库(因为没有导出库),并将在Host中找到它无法解析的全局变量的引用. 如何解决这个问题呢? 编...

linux 软连接和 硬链接的区别【图】

Linux软链接硬链接的区别 ? ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。 1.命令格式: ln [参数][源文件或目录][目标文件或目录] 2.命令功能:Linux文件...

linux – 将脚本中的符号链接添加到rc.d文件夹中以在系统启动期间启动进程【代码】

我正在使用fedora 15. 我试图添加MYSql守护进程在系统strtup期间启动. 我已经明白我必须将它添加到rc5.d,因为它是默认目标&是graphical.target. 来自inittab:systemd uses ‘targets’ instead of runlevels. By default, there are two main targets: multi-user.target: analogous to runlevel 3graphical.target: analogous to runlevel 5从An introduction to services, runlevels, and rc.d scripts 开始:When the system i...

c – linux中共享内存中的多个链接列表【代码】

我使用C语言和Linux作为平台.我想在多个进程中共享多个结构,这些结构具有链接列表的头部(这些列表也应该被共享)和指向彼此的指针.此数据所需的内存最高可达1Mb.因为我不能在共享内存中使用指针,因为它们对于不同的进程无效. 有两种选择:1)使用偏移值而不是指针.2)否则,使用不同的共享内存并使用共享内存ID(由shmget返回)而不是指针. 由于要共享的内存大小很大,哪个选项更好?你能建议另一种选择吗? 谢谢.解决方法:使用偏移值. 而...

Linux学习笔记之详解linux软连接和硬链接【代码】

0x00 链接文件 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 【软连接】 另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。 链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题...

linux – 将非PIC对象链接到具有PIC对象的可执行文件中是否有效

我将一个线程局部变量添加到几个始终直接链接到可执行文件的目标文件中.这些对象永远不会包含在共享库中(并且可以安全地假设在可预见的未来这将成立).这意味着这些对象不需要-fPIC标志,对吗? 默认情况下,我们的代码库为所有对象都有-fPIC标志.其中许多都包含在共享库中,因此使用-fPIC是有意义的.但是,这个标志提出了调试新线程局部变量的问题,因为GDB crashes while stepping over thread local variable with -fPIC.如果我用新线...

linux – Makefile和符号链接【代码】

我遇到了一个makefile的奇怪问题.我只是想在makefile中设置一个符号链接,但在一台机器上得到一条错误信息(Linux 2.6.18-238.12.1.el5)make: execvp: ln: Too many levels of symbolic links它在我的MacBook上完美运行.如果我在shell中执行相同的命令,它也可以正常工作.怎么可能出错?是否有任何环境变量对ln很重要?解决方法:我认为错误消息中的execvp是关键.我相信在尝试找到ln命令本身时,有太多级别的符号链接. 例:all:ln -nsf ...