ld相关内容

为什么链接的二进制文件的_size符号不能正常工作?

我使用'ld -r -b binary -o binary.o foo.jpeg'将资源嵌入程序中.很棒.我只是想知道为什么int _binary_size符号永远无法正确读取,负数或太大,而在程序运行之间却保持不变. 我总是必须做_binary_end-_binary_start,它可以完美地工作.似乎没有人可以使用... 像这里 .. ..为什么呢? 没有理由不使用end-start,因 ..
发布时间:2020-11-12 23:55:41 其他开发

共享库符号冲突和静态链接(在Linux上)

我遇到了一篇好文章共享库符号冲突(在Linux上)。问题在于,当执行和.so定义了相同的名称函数时,如果.so调用此函数名称,它将在执行时调用该函数名称,而不是在.so本身中调用该函数名称。 让我们在本文中讨论此案。我了解 layer.o 中的 DoLayer()函数具有 DoThing的外部函数依赖性(),当编译 layer.o 时。 但是,当编译 libconflict时.so , ..
发布时间:2020-10-27 02:13:25 服务器开发

gcc/ld:允许代码放置和删除未使用的功能

我试图允许在不放弃ld的垃圾回收功能的情况下,在输出二进制文件中指定特定符号的位置.例如:如果我在MyInclude.h 中 #ifndef MY_INCLUDE_H_ #define MY_INCLUDE_H_ void CalledFunc(void); void UncalledFunc(void); #endif 和一个主程序: #include "MyInclude.h ..
发布时间:2020-05-01 03:50:07 其他开发

Win32 Assembly-Extern函数命名("@"的含义)

如我所见,汇编代码中的extern WinAPI函数的名称类似于_ExitProcess@4. @4部分的含义是什么,以及如何确定在@之后使用什么数字? 我知道这与我们要链接的DLL有关,但是在许多情况下,我们不知道在@之后使用哪个数字,这会导致许多令人讨厌的undefined reference错误. 解决方案 Andreas H回答说,@之后的数字是函数返回之前从堆栈中删除 ..
发布时间:2020-04-30 08:37:26 其他开发

链接时无法使用syslibroot指定sdk根目录

我有一些要与ld链接的静态库.我的库位于目录/Users/rlt/p4/lib/和/Users/rlt/p4/usr2/lib中.我想传递w.r.t /Users/rlt/p4这些目录的相对路径,并使用-syslibroot指向该目录. ld的文档说此选项will prepend a pre-fix to all search paths.但是,以下命令为我指定的两个路径提供了找不到目录的错误: ..
发布时间:2020-04-30 08:37:24 其他开发

链接到调用其他共享库的共享库

我有一个使用libusb编写/构建的共享库 在构建时,我必须与libusb共享库链接-到目前为止非常简单 但是如果我随后编写/构建一个使用共享库的exe,则在构建该exe时我也必须链接到libusb 只要共享的lib知道在哪里可以找到libusb,我就会以为答案应该是 但实际上,答案是肯定的,exe确实必须链接到libusb或它抱怨找不到我共享的lib调用的libusb函数 ..
发布时间:2020-04-30 08:37:22 服务器开发

DSO引用libc_nonshared.a(stat.oS)中的隐藏符号"stat"

我正在尝试使用共享库(libscplugin.so)中包含的方法. 我已经满足所有图书馆的要求: libc.so,带有指向libc.so.6 的符号链接 libz.so,带有指向libz.so.1.2.8 的符号链接 libstdc++.so,带有指向libstdc++.so.6.0.20 的符号链接 编译后,出现以下错误消息: $ gcc test.c -o tes ..
发布时间:2020-04-30 08:37:15 其他开发

如果引用了某些符号,则导致链接失败

如果代码引用了库中的某个符号,是否有办法使链接失败? 我似乎模糊地记得在链接脚本语言中有这样一条指令,但是显然它不是GNU LD(也许是错误的记忆). 我需要它来防止第三方库的某些部分意外链接到应用程序.如果确实链接,则会添加一些静态初始化程序,这些初始化程序会在运行时造成严重破坏(这是一个嵌入式项目,因此环境有点古怪).我无法更改相关的第三方库.我想在构建时检测到错误.我想我可以编写 ..
发布时间:2020-04-30 08:37:13 其他开发

ld找不到-luuid

尝试使用我为mips处理器编写的工具链文件与Cmake进行交叉编译.在22%时出现此错误: /usr/local/mipsisa32r2el/r23/bin/ld: cannot find -luuid 是LD缺少图书馆吗?使用mips gcc编译器时是否可以纠正? 解决方案 正如Tsyvarev所说. git clone https://github.com/karel ..
发布时间:2020-04-30 08:37:09 其他开发

循环0xb7汇编但无法链接

我在Debian上有以下ASM代码,我正在尝试编译这些代码,但是ld和gcc都存在问题. uname -a:Linux kali 4.18.0-kali3-amd64 #1 SMP Debian 4.18.20-2kali2 (2018-11-30) x86_64 GNU/Linux 我首先运行:nasm -f elf shellcode.asm 这没有问题. 海湾合作委员 ..
发布时间:2020-04-30 08:37:07 服务器开发