【为什么这个简单的Linux C程序在运行时加载.so会崩溃?】教程文章相关的互联网学习教程文章

Linux动态库加载搜索路径详解

动态链接器ld.so按照下面的顺序来搜索需要的动态共享库: 1.ELF可执行文件中动态段中DT_RPATH所指定的路径。这实际上是通过一种不算很常用,却比较实用的方法所设置的:编译目标代码时,可以对gcc/g++加入链接参数“-Wl,-rpath”指定动态库搜索路径; 2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径; 3./etc/ld.so.cache中所缓存的动态库路径(如果支持ld.so.cache的话)。这可以通过修改配置文件/etc/ld.so.conf中指定的动态...

linux-获取功能指针以在我未直接加载的共享库中运行

我的Linux应用程序(A)链接到我没有源代码的第三方共享库(B).该库使用了我没有源代码(C)的另一个第三方共享库.我相信(B)使用dlopen来访问(C)而不是直接链接.我的理由是(B)上的’ldd’不显示(C),而objdump -X(B)显示对dlopen / dlclose / dlsym的引用. 我的要求是我需要在代码中为(A)获取指向位于(C)中的函数foo()的函数指针.通常,我会为此使用dlsym,但是我需要将它传递给我从dlopen返回的句柄,因为(B)没有公开它,所以我没有这个句柄...

在GNU / Linux系统上,应该从哪里加载应用程序数据?

在这种情况下,我将c与autoconf一起使用,但该问题在其他地方也适用. 我有一个运行时需要的Glade xml文件,我必须告诉应用程序它在哪里.我正在使用autoconf在代码中定义一个变量,该变量指向“指定的前缀目录” / app-name / glade.但这只有在安装了应用程序后才开始起作用.如果要在此之前运行程序怎么办?是否存在确定应检查应用程序数据的路径的标准方法? 谢谢 感谢您的答复.为了澄清,我不需要知道应用程序数据的安装位置(例如,通过...

linux-加载不受信任的配置变量【代码】

我正在处理一个bash提示项目,该项目将对您当前所在目录中的不同状态起作用. 我现在需要的是一种从当前目录加载小型配置的方法,使用可以轻松完成. .params.conf,但该方法非常不安全,因为只要您偶然发现目录中包含.params.conf文件的目录,任何对您所在目录具有写访问权的人都可以在您创建和执行命令的过程中使用. 从这样的文件中加载变量的最佳方法是什么?变量将大部分处于真/假状态,因此我不会以任何方式解析它们以便可以执行. 可能...

linux-多个用户同时访问时,有多少个程序/类副本被加载到内存中

我们正在尝试在共享环境中设置Eclipse,即它将安装在服务器上,并且每个用户都使用VNC连接到它.共享Eclipse的原因有很多,其中之一是与ClearCase的正确集成. 我们确定Eclipse正在使用大量内存.我们想知道Eclipse(JVM?)是否每个用户/会话一次加载每个类,或者是否已经有某种共享的对象已经加载到内存中? 这使我总体上思考一个基本问题.当两个或多个用户同时访问主机时,有多少个程序副本被加载到内存中. 是每个用户一个,还是用户之间共...

linux-ldconfig仅加载.so文件【代码】

我正在尝试运行一个使用libdnet的程序(Snort),但找不到它并输出:snort: error while loading shared libraries: libdnet.1: cannot openshared object file: No such file or directory现在我知道我应该通过运行ldconfig并将该库的路径放在/etc/ld.so.conf中来添加该库. libdnet位于/usr/local/lib中,因此自it already covers that dirctory开始,我不必修改ld.so.conf.因此,我运行了以下命令并跟踪输出,我注意到我的库没有被加载....

Linux内核:无法使用工作队列加载简单的Linux内核模块【代码】

我在Linux内核模块中使用工作队列时遇到问题.我的模块编译时没有给出任何错误,但是在加载时失败了.我无法加载以下模块并在dmesg中得到以下错误.[root@nanderson test_mod]# insmod workqueue_test.ko insmod: ERROR: could not insert module workqueue_test.ko: Unknown symbol in module [root@nanderson test_mod]# dmesg -c [50404.453417] workqueue_test: Unknown symbol destroy_workqueue (err 0) [50404.453437] workqu...

linux-如何使静态链接的ELF文件加载LD_PRELOAD .so

我有静态链接的二进制文件(ELF文件),它没有动态段,.dymsym节,并且不执行LD_PRELOAD命令等.我如何创建假的虚拟动态段来激活动态加载程序并执行LD_PRELOAD命令?解决方法:How could i create fake dummy dynamic segment to activate dynamic loader and perform LD_PRELOAD command?你不能 即使可以,让LD_PRELOAD进行预加载仍然是无用的:通常您希望在LD_PRELOADed库中插入一些符号,但是这要求这些符号在主二进制文件中不可解析,或者...

C语言中的Linux进程加载器

我正在为C语言中的Linux平台开发进程加载器;这只是一个娱乐项目.基本上,我想将可执行文件的所有部分手动加载到内存中,然后执行它. 大约一周前,我问了一个相关但更具体的问题here.但是,经过更多阅读之后,我意识到内存映射将是无关紧要的,直到我学习如何实际创建该过程为止.所以我的问题是,是否有一种方法可以在Linux上使用其自己的虚拟地址空间(我将能够访问它来加载代码和数据)创建“空白”新进程? 甚至有关过程加载器开发的一般...

您可以使用Linux Shell在内存中加载树结构吗?

我想用这样的Linux Shell脚本创建应用程序-可以吗? 该应用程序将创建一个包含数据的树.该树应加载到内存中.该树(加载到内存中)可以从任何其他外部Linux脚本中读取. >是否可以使用Linux Shell来实现?>如果是,您该怎么办?>有没有简单的例子呢?解决方法:这里有一个相关的讨论.他们使用共享内存设备/ dev / shm,表面上,它可用于多个用户.至少,值得一试: http://www.linuxquestions.org/questions/linux-newbie-8/bash-is-it-possi...

查看linux程序加载so文件的位置【代码】

最近安装公司新产品,安装的时候发现加载的so文件不对,于是开始找问题,到底加载的是谁?1 使用ldconfig -p|grep linkfileName比如:查看共享的ssl动态库;路径![](http://www.icode9.com/i/li/?n=1&i=images/blog/201910/26/50f9fde6c9584c112a2840337cb840dc.png?,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)2 使用ldd programName查看程序使用的静态连接库![](htt...

Linux,scanf循环,而标准输入已加载【代码】

我在scanf和Linux循环上遇到麻烦.#include <stdio.h> #include <stdlib.h> #include <stdio_ext.h>int main(int argc, char ** argv){int i = 0;char s[255];char c;while(i<10){printf("Here : ");scanf(" %s", s);printf("%s\n", s);i++;while((c = getchar()) != '\n' && c != EOF);}return EXIT_SUCCESS; }如果在shell Linux中,如果我执行这样的文件:echo "lol" | ./testWhileScanf那么结果将是这样的:Here : lol Here : lol...

如何使linux模块加载另一个模块?

我的任务是对一个模块进行编程以存储一些数据,对另一个模块进行编程以控制第一个模块,从而能够从代码中加载/卸载它. 我和内核编程一无所知,但我一直在努力寻找方法来做到这一点.有什么功能可以做到这一点吗? 提前非常感谢你解决方法:使用request_module加载模块

加载地址对于linux中的所有C程序都是通用的吗?

假设我有一个prog1.c,它被构建为prog1.out.在prog1.out中,有一个链接程序信息,该信息将告诉您将elf加载到的位置.这些地址将是一个虚拟地址.加载程序将查找这些信息,并将其作为过程启动.如链接器中所述,像DS,BSS这样的每个部分都将被加载到虚拟地址上.例如,我的prog2.out也具有相同的加载程序地址,BSS,DS等,那么它将发生冲突吗?我知道这不会冲突,但是会出现性能问题.由于两个进程具有相同的虚拟地址,但它们映射到不同的物理地址?我...

linux-无法加载为Python 3编译的mod_wsgi【代码】

我在CentOS上,尝试配置Apache以使用针对Anaconda Python 3.5编译的mod_wsgi.编译mod_wsgi似乎可以:sudo yum install httpd-devel sudo ./configure --with-python=/opt/anaconda/anaconda3/bin/python sudo makels -l /etc/httpd/modules/mod_wsgi.so -rwxr-xr-x. 1 root root 702205 Mar 2 23:12 /etc/httpd/modules/mod_wsgi.so但是,当我启动Web服务器时,似乎找不到其库:sudo service httpd start Starting httpd: httpd: Syn...