通过 LD 链接 D 程序时未定义符号“开始”
我有以下简单的程序: import std.stdio; int main(string[] argv) { writeln("Hello, world!"); return 0; } 我是这样构建的: DMD -c -m64 -od/proj/out -w -wi -fPIC -debug \ -g -I/proj/hello -unittest /proj/... »
我有以下简单的程序: import std.stdio; int main(string[] argv) { writeln("Hello, world!"); return 0; } 我是这样构建的: DMD -c -m64 -od/proj/out -w -wi -fPIC -debug \ -g -I/proj/hello -unittest /proj/... »
如何跟踪 gcc ld 链接器的链接过程?我需要看看它如何与共享对象的功能联系起来。 您应该能够从生成的二进制文件中看到nm -D 或objdu... »
一点背景知识: 我正在尝试为嵌入式传感器系统构建 AVR 二进制文件,并且我正在运行接近我的大小限制。我使用了一些外部库来帮助我,但是当每个库编译成一个对象时它们相当大。我想把它们拉成更小的对象,这样只有我需要的功能才链接到我的程序中。通过拆分一个大型库,我已经设法将二进制大小减少了 2k。 知道在游戏的每个阶段使用了哪些对象会很有帮助,这样我就可以更有效地拆分它们。有没有办法让ld 打印它正在... »
这是我用于使用 LD_PRELOAD 包装函数的模板: int gettimeofday(struct timeval *tv, struct timezone *tz) { static int (*gettimeofday_real)(struct timeval *tv, struct timezone *tz)=NULL; if (!gettimeofday_real) gett... »
我能够轻松地使用 .deb 文件在 Ubuntu 上下载并安装它。我目前正在使用 Crunchbang,但我根本无法安装它。 运行它,我在一个又一个库后请求库时出错。 在安装了所有这些以及更多之后,我能够清理 libQt4* 库。 apt-get install -y lib32-libpng lib32-libsm lib32-libxi lib32-libxrandr lib32-fre... »
makefile 中 -I 和 -L 标志的用途是什么? Jinx,您是在询问 $LDFLAGS 中的选项还是作为 make 的开关,就像这里一样... »
我的 hydra vocab 类似于Markus-lanthaler Vocab。这是我在用户类上检索用户集合的操作之一。 { "@id": "payu:retrieve_users", "@type": "hydra:Operation", "method": "GET", "label": "Retrieve users", "description": "Retriev... »
我对 Python 和编译 C 的大部分方面都是全新的。 我的默认 python 解释器是 python 2.7 的 anaconda 解释器。我正在尝试按照以下说明安装 pyipopt:https://github.com/xuy/pyipopt。 Pyipopt 安装到 /usr/local/lib/python2.7/dist-packages/pyipopt,但是当我尝试 import ... »
如下定义共享库: #include <unistd.h> #include <stdio.h> static void init(void) __attribute__((constructor)); static void init(void) { fprintf(stderr, "pid=%u\n", (unsigned) getpid()); } 在 AM... »
我有一个schema:ProductGroup 和schema:ProductModel 节点的图表,我编写了一个框架以嵌套结构输出它,在概念上类似于图书馆书籍章节示例。一切正常,除了框架输出在顶级ProductGroup 上包含一个isVariantOf: null,我宁愿没有。 { "@context": { "@vocab": "http://schema.org/", ... »
在链接描述文件中使用“attr”的目的是什么。我看到允许的字段是“ALIRWX”。链接器手册 [1]:ftp://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_mono/ld.html#SEC16 没有解释如果未提及会发生什么。举例来说,如果我不将该部分标记为“X”并将其留空,会发生什么。同样适用于“只读”部分。... »
我知道如何使用 gcc 和 ln 创建共享库,但是当我有目标文件(来自 c++ 或 c 代码)作为输入时,如何仅使用 ld 创建共享库以及如何换到新版本的库? ... »
一般来说,我知道这个错误是什么意思。但这是我的问题的独特之处 - 我确实有带有链接器无法找到的符号的(静态)库。我运行了“nm”来验证这一点,明确地寻找 x86_64 符号。他们在那里。 但是 - 我在同一个位置也有一个同名的动态库。我的猜测是链接器正在抓取 .dylib,而不是 .a,因此它无法找到所需的符号。 我确实找到了这篇关于当你有同名的静态和动态库时强制静态链接的帖子 - How... »
将 c++ 代码与 g++ 链接时遇到问题。我有两个文件:file1 和 file2: file1: int A(){ return B(); } int C(){ return 0; } file2: int B(){ return 4; } 我正在构建一个使用C() 函数的共享库,所以我只使用file1 而不是file2 进行编译。我在编译或链接时没有问题,但... »
我正在尝试使用 clang++-4.0 编译我的第一个 C++ 胚胎 我的代码: //main.cpp #include <iostream> // this line is to deal with the link error: // "undefined reference to symbol '__cxa_thread_atexit@@CXXABI..." // cf. ... »
我正在尝试调试我正在使用 gdb 编写的 x86 引导加载程序。由于 gdb 似乎不能很好地处理 16 位实模式,因此我正在使用其他人为此目的编写的 gdb script。 我尝试调试的代码的最小示例如下所示(文件asm/boot.asm): bits 16 global _start _start: ; zero DS xor ax, ax mov ds, ax ; TOD... »
小问题: llvm-ld如何定位libstdc++? 详情: 我收到以下错误消息: llvm-ld: error: Cannot find library 'stdc++' 在运行llvm-ld 时。我试图了解llvm-ld 如何搜索libstdc++。 我正在设置一个新系统并遵循在不同系统上工作的编译步骤。最终,我注意到在旧系统上我的.bashrc 中设置的LD_LIBRARY_PA... »
我正在使用自定义链接器脚本将内核映像分成两部分。第一个是正常的代码和数据,第二个是初始化代码和不再需要时丢弃的数据。初始化部分也不像内核本身那样在地址空间之间共享,所以如果它仍然存在(它处于开发的早期阶段),那么任何东西都会被复制到 fork() 上。 我已经分配了一个小的内核堆栈以在启动时使用,但据我所知,我只能将它 either 放在它在地址空间之间共享的 .bss 部分中或 在它不能作为未... »
我想知道较新的 Android 版本现在是否支持 LD_PRELOAD? 在 4.0 ICS 时不是这样,并且在文档 (NDK docs/SYSTEM-ISSUES.html) 中仍然有: No support for LD_LIBRARY_PATH, LD_PRELOAD, RTLD_LOCAL and many other options. 但几天前,我在我的 Android 4.2 ... »
将应用程序链接到动态共享库时,例如在 gcc -o myprog myprog.o -lmylib 我知道链接器(我的 Linux 上的 ld)使用 -l 选项在生成的 myprog ELF 可执行文件中存储将在加载和链接时使用的库的名称(在本例中为 mylib)时间(如果我们忽略惰性动态链接,程序将在何时启动)。我想知道ld(我只是说在编译时完成的静态链接步骤)关于动态共享库的其他工作是什... »