小编Apo*_*po_的帖子

otool 报告的依赖路径不是加载程序找到依赖项的路径

希望这不是重复的(我发现了很多类似的问题,但不完全是我要问的问题)。

\n\n

当我运行时在linux上ldd <path/to/executable>,我会得到一个很好的共享库依赖项列表,以及动态链接器找到这些依赖项的路径(或者一条未找到依赖项的消息)。

\n\n

在mac上使用时otool -L <path/to/executable>我得到依赖项,并且路径是相对于 rpath 的,即使依赖项不存在。本质上,它报告依赖关系应该相对于 rpath 的位置,而不是动态链接器发现的位置。据我了解,otool 直接从二进制文件中读取此信息,而不是像 ldd 那样调用链接器。

\n\n

我知道我可以通过将 DYLD_PRINT_LIBRARIES 变量设置为 1 来运行可执行文件来获取这些路径,但这对于动态库不起作用,甚至对于可执行文件也不方便。

\n\n

所以我的问题是,我可以在 mac 中获得与 ldd 完全相同的行为吗?

\n\n

o工具信息:

\n\n
\xe2\x9e\x9c  otool --version\nllvm-otool(1): Apple Inc. version cctools-906\nApple LLVM version 9.1.0 (clang-902.0.39.1)\n  Optimized build.\n  Default target: x86_64-apple-darwin17.5.0\n  Host CPU: ivybridge\n
Run Code Online (Sandbox Code Playgroud)\n

macos otool ldd

8
推荐指数
0
解决办法
457
查看次数

在Visual Studio 2013中使用Debug运行时库时,C++代码运行得更快

tl;博士:有人可以解释下表中显示的性能差异吗?

代码设置:有一个整数数组,在for循环中填充了值.
VS项目设置:使用两个配置文件(配置设置).第一个是默认的Release配置文件,第二个是我们称之为D_Release,它是Release配置文件的精确副本,只有一个区别; D_Release配置文件使用多线程调试DLL(/ MDd).

我运行了两个配置文件的代码,对于每个配置文件,我将数组存储在堆,堆栈和bss中(因此有6种不同的配置).

我测量的时间如下:

 ------+---------+-----------
|      |   /MD   |   /MDd    |
|------+---------+-----------|
| Heap |  8,5ms  |   3,5ms   |
|------+---------+-----------|
| Stack|  3,5ms  |   3,5ms   |
|------+---------+-----------|
| bss  |   10ms  |   10ms    |
 ------+---------+----------- 
Run Code Online (Sandbox Code Playgroud)

[开始编辑]
经过一些评论后,我在循环之前测量了工作集大小,得到了以下结果

 ------+---------+-----------
|      |   /MD   |   /MDd    |
|------+---------+-----------|
| Heap |  2.23mb |  40.6mb   |
|------+---------+-----------|
| Stack|  40.4mb |  40.6mb   |
|------+---------+-----------|
| bss  |  2.17mb |  2.41mb   |
 ------+---------+----------- …
Run Code Online (Sandbox Code Playgroud)

c++ performance visual-studio-2013

6
推荐指数
0
解决办法
130
查看次数

标签 统计

c++ ×1

ldd ×1

macos ×1

otool ×1

performance ×1

visual-studio-2013 ×1