ld相关内容
我使用'ld -r -b binary -o binary.o foo.jpeg'将资源嵌入程序中.很棒.我只是想知道为什么int _binary_size符号永远无法正确读取,负数或太大,而在程序运行之间却保持不变. 我总是必须做_binary_end-_binary_start,它可以完美地工作.似乎没有人可以使用... 像这里 .. ..为什么呢? 没有理由不使用end-start,因
..
编译"make"时收到错误消息 $ make g++ -fopenmp -o lang.test main.o -I../../../include/Lheader -I../../../include -L../../../lib/ -llmi -lblas -lboost_regex -lpthread -lleveldb /usr/bin/ld: ../../../lib//libl
..
这是Linux手册页中的代码: #include #include extern char etext, edata, end; int main() { printf("First address past:\n"); printf(" program text (etext) %10p\n", &etext);
..
我遇到了一篇好文章共享库符号冲突(在Linux上)。问题在于,当执行和.so定义了相同的名称函数时,如果.so调用此函数名称,它将在执行时调用该函数名称,而不是在.so本身中调用该函数名称。 让我们在本文中讨论此案。我了解 layer.o 中的 DoLayer()函数具有 DoThing的外部函数依赖性(),当编译 layer.o 时。 但是,当编译 libconflict时.so ,
..
我当时正在使用GLFW学习OpenGL,但当时对makefile的了解还不多。我使用OpenGL,但是我决定学习更多makefile。经过大量的网站,时间和反复试验后,我想到了这一点: EXENAME =“ OpenGL Demo” CC = gcc SRCS = ../src/OpenGLDemo.c OBJS = $(SRCS:.c = .o) CFLAGS =-墙-g
..
我尝试编写没有 main 的简单程序 segment .data fmt db "test", 0xa, 0 segment .text global _start extern printf _start: lea rdi, [fmt] ; print simple string xor eax, eax call printf
..
我想在MacOS Catalina(64位)上创建一个二进制文件,并使其具有可执行的数据段(请参见我用 制作二进制文件 gcc -nostdlib -segprot __DATA rwx rw- .... 我还用gcc创建了一个目标文件,然后直接调用ld. ld版本是 $ ld -v @(#)PROGRAM:ld PROJECT:ld64-530 BUILD 18:57:17
..
我正在将应用程序链接到lflutter_linux_glfw. nm工具显示它具有glad_glTexImage2D: nm libflutter_linux_glfw.so | grep glTexImage2D 00000000034e87a0 b glad_glTexImage2D 00000000034e87a8 b glad_glTexImage2DMultisample 所以
..
我试图允许在不放弃ld的垃圾回收功能的情况下,在输出二进制文件中指定特定符号的位置.例如:如果我在MyInclude.h 中 #ifndef MY_INCLUDE_H_ #define MY_INCLUDE_H_ void CalledFunc(void); void UncalledFunc(void); #endif 和一个主程序: #include "MyInclude.h
..
如我所见,汇编代码中的extern WinAPI函数的名称类似于_ExitProcess@4. @4部分的含义是什么,以及如何确定在@之后使用什么数字? 我知道这与我们要链接的DLL有关,但是在许多情况下,我们不知道在@之后使用哪个数字,这会导致许多令人讨厌的undefined reference错误. 解决方案 Andreas H回答说,@之后的数字是函数返回之前从堆栈中删除
..
我有一些要与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.但是,以下命令为我指定的两个路径提供了找不到目录的错误:
..
我有一个使用libusb编写/构建的共享库 在构建时,我必须与libusb共享库链接-到目前为止非常简单 但是如果我随后编写/构建一个使用共享库的exe,则在构建该exe时我也必须链接到libusb 只要共享的lib知道在哪里可以找到libusb,我就会以为答案应该是 但实际上,答案是肯定的,exe确实必须链接到libusb或它抱怨找不到我共享的lib调用的libusb函数
..
我正在构建一个LFS系统(请参阅LFS 7.2) 在构建glibc-2.16.0时出现此错误: /mnt/lfs/tools/bin/../lib/gcc/i686-lfs-linux-gnu/4.7.1/../../../../i686-lfs-linux-gnu/bin/ld: cannot find -lgcc_s collect2: error: ld returned 1 e
..
我正在尝试使用共享库(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
..
如果代码引用了库中的某个符号,是否有办法使链接失败? 我似乎模糊地记得在链接脚本语言中有这样一条指令,但是显然它不是GNU LD(也许是错误的记忆). 我需要它来防止第三方库的某些部分意外链接到应用程序.如果确实链接,则会添加一些静态初始化程序,这些初始化程序会在运行时造成严重破坏(这是一个嵌入式项目,因此环境有点古怪).我无法更改相关的第三方库.我想在构建时检测到错误.我想我可以编写
..
将KIF添加到现有Xcode 6工作区时遇到此错误: ld: library not found for -lPods-MyProjectTests-KIF MyProject.xcworkspace/驻留在MyProject.xcproject/的父目录中(并且还取决于其他几个同级项目)可能对我的情况有什么特殊之处: ./MyProject.xcworkspace/ ./MyPr
..
尝试使用我为mips处理器编写的工具链文件与Cmake进行交叉编译.在22%时出现此错误: /usr/local/mipsisa32r2el/r23/bin/ld: cannot find -luuid 是LD缺少图书馆吗?使用mips gcc编译器时是否可以纠正? 解决方案 正如Tsyvarev所说. git clone https://github.com/karel
..
我在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 这没有问题. 海湾合作委员
..
当前,我正在学习RISC-V,使用RISC-V工具链,并为我的嵌入式系统编辑新的ld脚本.我写了一个例子,并编译以观看操作码. 示例: #include //float.c int main() { float a=1.04; printf("a=%f\n",a); return 0; } 我的步骤是: 1. riscv64-unknown-elf-gc
..
当我发现如果不将对象文件与gcc链接到标准库时,发现我的应用程序变成了僵尸,我正在尝试使用汇编代码和GTK + 3库.这是我的stdlib -free应用程序的代码 %include "gtk.inc" %include "glib.inc" global _start SECTION .data destroy db "destroy", 0 ; con
..