草庐IT

ld-preload

全部标签

linux - 为 valgrind 和 gdb 记录禁用 glibc (LD_HWCAP_MASK,/etc/ld.so.nohwcap) 中的 AVX 优化函数

带有glibc的现代x86_64linux将检测到CPU支持AVX扩展并将许多字符串函数从通用实现切换到AVX-optimized版本(在ifunc调度程序的帮助下:1,2)。此功能对性能有好处,但它会阻止一些工具,如valgrind(olderlibVEXs,在valgrind-3.8之前)和gdb的“目标记录”(ReverseExecution)正常工作(Ubuntu“Z”17.04测试版、gdb7.12.50.20170207-0ubuntu2、gcc6.3.0-8ubuntu120170221、UbuntuGLIBC2.24-7ubuntu2):$cata.c#include#

linux - gcc: 找不到/usr/local/lib 中的链接库,但是/etc/ld/so.conf.d/libc.conf 列出了它?

我遇到了共享库和gcc的问题。起初我无法运行我编译的程序,因为我收到以下错误:加载共享库时出现gcc错误。查了一下,发现是共享库找不到​​。但是我已经确定共享库位于/usr/local/lib中,AFAICT是共享库的常用目录,应该从一开始就可以使用。我读到您可以设置LD_LIBRARY_PATH,这对我有用。但是,我不希望每次运行我的程序时都设置它。进一步搜索建议编辑ld.so.conf。当我查看它时,它具有以下内容:include/etc/ld.so.conf.d/*.conf查看ld.so.conf.d目录显示了一系列文件,包括libc.conf。该文件中包含以下内容:/usr/

linux - gcc: 找不到/usr/local/lib 中的链接库,但是/etc/ld/so.conf.d/libc.conf 列出了它?

我遇到了共享库和gcc的问题。起初我无法运行我编译的程序,因为我收到以下错误:加载共享库时出现gcc错误。查了一下,发现是共享库找不到​​。但是我已经确定共享库位于/usr/local/lib中,AFAICT是共享库的常用目录,应该从一开始就可以使用。我读到您可以设置LD_LIBRARY_PATH,这对我有用。但是,我不希望每次运行我的程序时都设置它。进一步搜索建议编辑ld.so.conf。当我查看它时,它具有以下内容:include/etc/ld.so.conf.d/*.conf查看ld.so.conf.d目录显示了一系列文件,包括libc.conf。该文件中包含以下内容:/usr/

linux -/usr/bin/ld : skipping incompatible foo. 所以在搜索 foo 时

我正在使用Ubuntu13.1064位,在编译vlfeat库的python包装器时出现以下错误。g++-o_vlfeat.so../../vl/aib.o../../vl/generic.o../../vl/hikmeans.o../../vl/ikmeans.o../../vl/imopv.o../../vl/mathop.o../../vl/pgm.o../../vl/rodrigues.o../../vl/stringop.o../../vl/getopt_long.o../../vl/host.o../../vl/imop.o../../vl/imopv_sse2.o../..

linux -/usr/bin/ld : skipping incompatible foo. 所以在搜索 foo 时

我正在使用Ubuntu13.1064位,在编译vlfeat库的python包装器时出现以下错误。g++-o_vlfeat.so../../vl/aib.o../../vl/generic.o../../vl/hikmeans.o../../vl/ikmeans.o../../vl/imopv.o../../vl/mathop.o../../vl/pgm.o../../vl/rodrigues.o../../vl/stringop.o../../vl/getopt_long.o../../vl/host.o../../vl/imop.o../../vl/imopv_sse2.o../..

linux - 构建一个使用 ld 的选项 -rpath 和 $ORIGIN 的简单(hello-world-esque)示例

注意:下面是完整的工作示例。原始问题如下:我在将ld的-rpath参数与$ORIGIN一起使用时遇到问题。由于找不到完整的例子,我想我会尝试自己写一个,以便我和其他人以后可以使用它。一旦我开始工作,我会整理它。我askedaboutthisbefore,但我认为我的帖子有点令人困惑。示例项目构建了一个共享库和一个链接到所述库的可执行文件。它非常小(3个文件,22行,包括构建脚本)。您可以从here下载该项目。文件结构(构建前):项目/源/foo.cppmain.cppmake.shproject/src/foo.cppintfoo(){return3;}project/src/main

linux - 构建一个使用 ld 的选项 -rpath 和 $ORIGIN 的简单(hello-world-esque)示例

注意:下面是完整的工作示例。原始问题如下:我在将ld的-rpath参数与$ORIGIN一起使用时遇到问题。由于找不到完整的例子,我想我会尝试自己写一个,以便我和其他人以后可以使用它。一旦我开始工作,我会整理它。我askedaboutthisbefore,但我认为我的帖子有点令人困惑。示例项目构建了一个共享库和一个链接到所述库的可执行文件。它非常小(3个文件,22行,包括构建脚本)。您可以从here下载该项目。文件结构(构建前):项目/源/foo.cppmain.cppmake.shproject/src/foo.cppintfoo(){return3;}project/src/main

linux - 大师们说 LD_LIBRARY_PATH 不好——有什么选择?

我阅读了一些关于使用LD_LIBRARY_PATH的问题的文章,即使作为包装脚本的一部分也是如此:http://linuxmafia.com/faq/Admin/ld-lib-path.htmlhttp://blogs.oracle.com/ali/entry/avoiding_ld_library_path_the在这种情况下-推荐的替代方案是什么?谢谢。 最佳答案 您可以尝试添加:-Wl,-rpath,path/to/lib链接器选项。这将使您无需担心LD_LIBRARY_PATH环境变量,并且您可以在编译时决定指向特定的库。对

linux - 大师们说 LD_LIBRARY_PATH 不好——有什么选择?

我阅读了一些关于使用LD_LIBRARY_PATH的问题的文章,即使作为包装脚本的一部分也是如此:http://linuxmafia.com/faq/Admin/ld-lib-path.htmlhttp://blogs.oracle.com/ali/entry/avoiding_ld_library_path_the在这种情况下-推荐的替代方案是什么?谢谢。 最佳答案 您可以尝试添加:-Wl,-rpath,path/to/lib链接器选项。这将使您无需担心LD_LIBRARY_PATH环境变量,并且您可以在编译时决定指向特定的库。对

Linux 功能 (setcap) 似乎禁用了 LD_LIBRARY_PATH

我使用LD_LIBRARY_PATH为应用程序设置某个用户库的路径。但是,如果我在此应用程序上设置功能sudosetcapCAP_NET_BIND_SERVICE=eipmyapplication然后LD_LIBRARY_PATH似乎被忽略了。当我启动程序时,Linux提示找不到某个共享库。我猜想有某种保护措施可以防止具有扩展权限的应用程序被劫持。有解决方法吗? 最佳答案 如其他答案中所述,此行为是有意的。如果您可以自己编译(或至少链接)应用程序,则有某种解决方法。然后你可以通过-Wl,-rpath到gcc或-rpath到ld,你就