草庐IT

shared-libraries

全部标签

linux - 如何使用$ORIGIN 和suid 应用程序?

我正在使用启用了setcapCAP_NET_RAW的python。我的python脚本导入了一个共享库,它的RPATH中有$ORIGIN。由于我的python现在是一个suid应用程序,因此未评估$ORIGIN并且库未正确加载(这是由于securityleakfoundinglibc引起的)。有没有办法告诉链接器我的库路径是安全的并加载库?一些注意事项:我只在开发阶段需要这个功能。我不是在寻找生产解决方案。以root身份工作时,一切正常。我不想以root身份工作。谢谢,戴夫 最佳答案 您可以尝试其中之一。考虑一下是解决$ORIGIN

linux - 如何限制对共享对象中符号的访问?

我有一个共享库(bar.so)形式的插件,它链接到一个更大的程序(foo)。foo和bar.so都依赖于同一个第三方库(baz),但它们需要将baz的实现完全分开。因此,当我链接foo(使用提供的目标文件和存档)时,我需要它忽略bar.so中对baz的任何使用,反之亦然。现在,如果我将foo与--trace-symbol=baz_fun链接,其中baz_fun是有问题的符号之一,我将得到以下输出:bar.so:definitionofbaz_funfoo/src.a(baz.o):referencetobaz_fun我相信这告诉我foo正在从bar.so引用baz_fun(并且foo的

linux - 如何限制对共享对象中符号的访问?

我有一个共享库(bar.so)形式的插件,它链接到一个更大的程序(foo)。foo和bar.so都依赖于同一个第三方库(baz),但它们需要将baz的实现完全分开。因此,当我链接foo(使用提供的目标文件和存档)时,我需要它忽略bar.so中对baz的任何使用,反之亦然。现在,如果我将foo与--trace-symbol=baz_fun链接,其中baz_fun是有问题的符号之一,我将得到以下输出:bar.so:definitionofbaz_funfoo/src.a(baz.o):referencetobaz_fun我相信这告诉我foo正在从bar.so引用baz_fun(并且foo的

c++ - 如何链接到共享库的旧版本

我正在我的计算机上构建我的程序,libtiff.so->libtiff.so.5。然后将构建推送到另一台机器上libtiff.so->libtiff.so.4。在运行时,我的程序存在:«加载共享库时出错:libtiff.so.5:无法打开共享对象文件:没有这样的文件或目录»。我不能升级另一台机器,我想避免在虚拟机上编译(与执行机器具有相同的linux版本)。因此,我想强制编译器使用libtiff.so.4而不是libtiff.so.5。我的计算机上安装了libtiff.so.4(以及libtiff.so.5)。我怎样才能强制与这个版本而不是新版本建立联系。我考虑过移动libtiff.s

c++ - 如何链接到共享库的旧版本

我正在我的计算机上构建我的程序,libtiff.so->libtiff.so.5。然后将构建推送到另一台机器上libtiff.so->libtiff.so.4。在运行时,我的程序存在:«加载共享库时出错:libtiff.so.5:无法打开共享对象文件:没有这样的文件或目录»。我不能升级另一台机器,我想避免在虚拟机上编译(与执行机器具有相同的linux版本)。因此,我想强制编译器使用libtiff.so.4而不是libtiff.so.5。我的计算机上安装了libtiff.so.4(以及libtiff.so.5)。我怎样才能强制与这个版本而不是新版本建立联系。我考虑过移动libtiff.s

linux - 调试 ld, "Inconsistency detected by ld.so"

我正在尝试使用一个名为GLV的小部件库对于我正在开发的应用程序。我正在运行LinuxMint17。我安装了所有库并成功构建了GLV库,但是当我尝试运行已构建的示例之一时,出现了此共享库错误。Inconsistencydetectedbyld.so:dl-version.c:224:_dl_check_map_versions:Assertion`needed!=((void*)0)'failed!谁能帮我找出共享库中的不一致是从哪里来的?更多信息在README文件中说GLVrequiresonlyOpenGL,GLU,andGLEW(Linuxonly).Therearenoother

linux - 调试 ld, "Inconsistency detected by ld.so"

我正在尝试使用一个名为GLV的小部件库对于我正在开发的应用程序。我正在运行LinuxMint17。我安装了所有库并成功构建了GLV库,但是当我尝试运行已构建的示例之一时,出现了此共享库错误。Inconsistencydetectedbyld.so:dl-version.c:224:_dl_check_map_versions:Assertion`needed!=((void*)0)'failed!谁能帮我找出共享库中的不一致是从哪里来的?更多信息在README文件中说GLVrequiresonlyOpenGL,GLU,andGLEW(Linuxonly).Therearenoother

c++ - LLVM out of source pass 构建 : Loadable modules not supported (on Linux)

几周前,我在debianwheezy上从主干编译并安装了LLVM(配置和制作),现在尝试在源代码外编译llvm-mutatepass.AFAICC,llvm-mutate遵循cmakeoutofsourcepassbuildinstructions.尝试构建llvm-mutate时mkdirbuildcdbuildcmake-DCMAKE_MODULE_PATH=/usr/local/share/llvm/cmake../我得到:--忽略变异--此平台不支持可加载模块。嗯?opt和可加载channel(位于llvm_trunk/build/Debug+Asserts/lib/xxx.s

c++ - LLVM out of source pass 构建 : Loadable modules not supported (on Linux)

几周前,我在debianwheezy上从主干编译并安装了LLVM(配置和制作),现在尝试在源代码外编译llvm-mutatepass.AFAICC,llvm-mutate遵循cmakeoutofsourcepassbuildinstructions.尝试构建llvm-mutate时mkdirbuildcdbuildcmake-DCMAKE_MODULE_PATH=/usr/local/share/llvm/cmake../我得到:--忽略变异--此平台不支持可加载模块。嗯?opt和可加载channel(位于llvm_trunk/build/Debug+Asserts/lib/xxx.s

c - GNU libc.so 如何既是共享对象又是独立可执行文件?

在Linux中,GNU标准C库的共享库(libc.so)不仅是一个共享库,还可以作为独立的可执行文件运行,打印出版本信息:[me@computer~]$/lib/libc.so.6GNUCLibrarystablereleaseversion2.12,byRolandMcGrathetal.Copyright(C)2010FreeSoftwareFoundation,Inc.Thisisfreesoftware;seethesourceforcopyingconditions.ThereisNOwarranty;notevenforMERCHANTABILITYorFITNESSFOR