Questions tagged [dynamic-linking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
编译自定义 malloc
我编写了一个自定义库,它使用标准 C 原型实现了 malloc/calloc/realloc/free,并且我想出了如何将它编译为 so。我想通过链接标准应用程序来测试库?什么是这样做的好方法?一旦我有了一个工作库,我假设我可以使用 LD_PRELOAD 加载它,但是如何让我的函数与系统库共存但优先于系统库的函数?我的函数需要调用 malloc 才能让内存运行,所以我不能完全放弃 stdlib... 帮助?
在 php 页面上的动态链接的结果中有一个额外的 /directory/
我又来了。我不想打扰,但这是另一个 zinger。
我有一个定制的购物车,并在页面中有一些动态链接,当在浏览器中提供这些链接时,会将 $name 替换为产品名称,将 $p 替换为 procuct id 号。我的目标是在页面上创建这样的链接:http://www.something.com/buy/ProductName/382793/
我得到的是http://www.something.com/buy/ProductName/0/382793
并且没有斜杠。必须有斜线。
代码如下所示:<a title=\"View Product.\" href=\"http://www.something.com/buy/$name/$p/". $line["PID"]. "\">PRODUCT LINKO</a>
您可以看到我的 $name 和 $p 在末尾用斜杠和尾部斜杠分隔,但它不起作用。女士们先生们有什么想法吗?
Calling Java (or python or perl) from a PHP script
I've been trying to build a simple prototype application in Django, and am reaching the point of giving up, sadly, as it's just too complicated (I know it would be worth it in the long-run, but I really just don't have enough time available -- I need something up and running in a few days). So, I'm now thinking of going with PHP instead, as it's the method for creating dynamic web content I'm most familiar with, and I know I can get something working quickly.
My application, while simple, is probably going to be doing some reasonably complex AI stuff, and it may be that libraries don't exist for what I need in PHP. So I'm wondering how easy / possible it is for a PHP script to "call" a Java program or Python script or a program or script in another language. It's not entirely clear to me what exactly I mean by "call" in this context, but I guess I probably mean that ideally I'd like to define a function in, let's say Java, and then be able to call it from PHP. If that's not possible, then I guess my best bet (assuming I do go with PHP) will be to pass control directly to the external program explicitly through a POST or GET to a CGI program or similar.
Feel free to convince me I should stick with Django, although I'm really at the point where I just can't figure out what model I need to produce the HTML form I want, which seems such a basic thing that I fear for my chances of doing anything more complex...
Alternatively, anyone who can offer any advice on linking PHP and other languages, that'll be grateful received.
强制使用与库不同的 SONAME 链接
如何以与具有冲突 SONAME 的两个现有版本库兼容的方式链接二进制文件?这两个版本不共享相同的 SONAME 前缀。一个是 libcapi10.so.3,另一个是 libcapi10.so.4。我无法重新编译它们,因为我将它们作为二进制文件获取,并且由于这些是经过认证的加密库,我无法请求具有正确 SONAME 的新库。当然,如果一个是 libcap10.so.3 而另一个是 libcap10.so.3.1,我不会遇到任何问题,因为我只需要链接第一个以与第二个兼容。这两个库被告知是二进制兼容的(我应该相信这个信息)。我搜索但没有找到任何好的方法,无论是使用链接器选项还是使用 objcopy。我想避免手动修补二进制文件以在编译链接时使用它。
所以回到我最初的问题:如何指定 SONAME(在本例中为 libcap10.so)用于链接?
(我已经搜索过了,我目前的发现只是它是不行的,但不幸的是这是一个要求......)。
更新:我使用类似 sed 的二进制工具修补了 .so 库,将 libcapi10.so.6\0 替换为 libcapi10.so\0,因为新名称比以前的名称短,并且 SONAME 的 elf 结构是以 C 字符串结尾使用 0 并且在 gcc 链接期间不使用 elf 校验和。我只在编译时使用了那个补丁库,然后我可以在我的目标系统上使用相同的二进制文件中的一个或另一个原始库。
gperftools CPU profiler 究竟是如何启动的?
gperftools 文档说libprofiler
应该链接到目标程序:
(不改变程序的代码)。
然后程序应该使用特定的环境变量运行:
问题是:如何libprofile
有机会启动和完成一个分析器,当它只是被加载,但它的函数没有被调用?
该库中没有构造函数(proof)。 库代码中“CPUPROFILE”的所有场合均不涉及启动分析器的任何地方。
我没有想法,下一步该去哪里看?
从一台主机到另一台主机的共享库路径不一致
我构建了我的 qt 应用程序,以便它使用的所有 Qt 模块都包含在与可执行文件相同的目录中。它可以在我用来构建应用程序的机器上运行,我确保通过删除除应用程序当前目录之外的所有共享库来测试它。执行 ldd 表明它在当前目录中查找这些库并自行放置可执行文件无法打开可执行文件。所以这一切都很好,但是当我将此目录传输到主机时,它仍然找不到这些库。可能是什么问题呢?
获取适用于 Android x86 的 VBox 访客添加
我在 VirtualBox 上运行 Android x86,我希望启用指针集成,这需要在来宾操作系统上安装 VirtualBox Guest Additions。
我进行了很多搜索,但我发现必须使用 Android-x86 内核头文件来编译 Guest Additions。谁能分享如何做到这一点?
提前致谢。
在 Xcode 中调试时,我如何知道加载了哪些 dylib?
我在使用特定库时遇到了一些问题,我正在尝试测试旧版本是否可以解决我的问题。该库使用存储在 .app 文件附近的 dylib 文件动态链接。这些 dylib 文件到处都是,我不完全确定我的应用程序实际上正在使用我试图让它使用的那些。
在 Visual Studio 上,您可以在调试应用程序时轻松查看加载的 dll 文件列表。Xcode 中是否有类似的功能?
使用 RPATH 但不使用 RUNPATH?
这个页面说关于图书馆搜索的顺序ld.so
:
然后建议:
发布二进制文件时,要么使用 RPATH 而不是 RUNPATH,要么确保在运行之前设置 LD_LIBRARY_PATH。
那么,使用RPATH
withRUNPATH
很糟糕,因为RUNPATH
某种取消RPATH
,所以间接动态加载不能按预期工作?但是为什么后来RPATH
被弃用了RUNPATH
呢?
有人可以解释一下情况吗?
Java 附加 API:UnsatisfiedLinkError
使用 时Java Attach API
,我仅在Linux上收到以下链接错误(在不同的机器上尝试过):
有趣的是,在Solaris 和 Windows 上,它开箱即用。
我尝试了几种指定java.library.path
指向包含libattach.so
但没有运气的目录的组合。
这里有什么问题?
还有一个额外的问题:
有没有办法查看哪个本机库实际上绑定到了 java 类?