ld相关内容

覆盖静态库弱符号

我要让我的项目的静态。一个库从多个来源,他们中的一些薄弱定义功能等实现它们。比方说,作为例子,我有: lib1.c: 无效的DefaultHandler() { 对于(;;); } 无效将myHandler()__attribute __((弱,别名(“DefaultHandler的”))); lib2.c: 无效将myHandler() { / *在这里做我的东西* / } ..
发布时间:2016-08-18 14:38:37 C/C++

直接与LD链接一个C程序失败,未定义的引用`__libc_csu_fini`

我试图编译Linux下的C程序。然而,出于好奇,我试图用手来执行一些步骤:我使用的: gcc的前端,产生汇编code 然后运行GNU汇编获取对象文件 然后再与C运行时链接它得到一个工作的可执行文件。 现在我被困在连接的部分。 该计划是一个非常基本的“Hello world”: 的#include<&stdio.h中GT; 诠释主(){ 的printf(“你好\\ n ..
发布时间:2016-08-18 14:24:20 C/C++

如何建立使用的glibc和静态链接的定制版本C程序?

我已经建立的glibc 2.14,并在目录中安装了〜/ GLIBC / glibc_install 。现在我想建立和运行使用此C库,而不是我的系统默认的C库程序。 要确保我是用我的自定义的glibc,我加入到看跌期权的呼叫到的glibc / STDIO常见/ printf.c:__的printf 打印一个消息。 然后我重建和重新安装glibc的。 然后我写了一个“Hello,Wo ..
发布时间:2016-08-18 13:25:03 C/C++

如何让GCC链接强烈符号静态库覆盖弱的象征?

我的问题可以总结如下: bar.c 的#include<&stdio.h中GT;空巴(){ 的printf(“栏\\ n”); } 的main.c 的#include<&stdio.h中GT;无效__attribute __((弱))巴(){ 的printf(“富\\ n”); }诠释主(){ 酒吧(); 返回0; } 的Makefil ..
发布时间:2016-08-18 13:12:26 C/C++

获得文本段的起始和结束地址在可执行

我需要得到一个可执行文件的文本段的起始和结束地址。我怎样才能得到它呢? 我可以得到大约结束地址 _init 符号或 _start 符号,但是起始地址?我应考虑文本的结束地址部分的 .RODATA 部分的开始前的最后一个地址 或者我将编辑默认LD脚本,并添加自己的符号表示文本部分的开始和结束,并将它传递给GCC编译时?在这种情况下,我应该在哪里放置新的符号,应我认为init和FIN​​I节? ..
发布时间:2016-08-18 13:02:21 C/C++

在一个.so文件链接对老年人符号版本

在x86_64的Linux使用gcc和ld我需要对一个库的较新版本的链接(glibc的2.14),但执行需要用较旧版本(2.5)的系统上运行。由于唯一的不兼容符号的memcpy(需要memcpy@GLIBC_2.2.5但提供memcpy@GLIBC_2.14库),我想告诉大家,而不是采取了memcpy的默认版本,它应该采取一个旧版本我指定的链接 我发现了一个很arkward办法做到这一点:只需在 ..
发布时间:2016-08-18 12:47:06 服务器开发

我为什么要每次运行我的应用程序的时间定义与出口LD_LIBRARY_PATH?

我有一个使用一些共享库(海合会C code)部分code。编译当我有明确的定义包括使用-I和-L,因为它们不是标准的地方库目录。当我尝试运行code,我得到以下错误: ./ sync_test ./sync_test:错误而载入共享库:libsync.so:无法打开共享对象文件:没有这样的文件或目录 然而,做到以下几点,一切工作就好了:出口LD_LIBRARY_PATH =“/路径/要/库 ..
发布时间:2016-08-18 12:47:00 服务器开发

如何链接到不同的libc文件?

我想用我的节目一起提供的共享库,而不是使用目标系统的由于版本差异。 LDD 说我的程序使用这些共享库: Linux的gate.so.1 => (0xf7ef0000)**(由内核制造)** libc.so.6的= GT; /lib32/libc.so.6(0xf7d88000)**(libc-2.7.so)** /lib/ld-linux.so.2(0xf7ef1000)**(ld-2 ..
发布时间:2016-08-17 23:29:48 C/C++

如何强制GCC链接未使用的静态库

我有一个程序和静态库: //的main.cpp INT主(){}// mylib.cpp #包括LT&;&iostream的GT; 的struct { S(){性病::法院LT&;<的“Hello World \\ n”;} }; šš; 我想静态库( libmylib.a添加)链接到程序对象( main.o中) ,尽管后者不使用前的任何符号直接 下面的命令似乎并没有与工作G ..
发布时间:2016-08-17 22:45:46 C/C++开发

从内存dlopen的?

我正在寻找一种方式来直接从内存中加载生成的对象code。 我明白,如果我把它写入一个文件,我可以打电话的dlopen动态加载它的符号并将其链接。然而,这似乎有点迂回的方式,考虑到它在内存中开始了,被写入到磁盘,然后由dlopen在内存中加载。我不知道是否有某种方式来动态链接目标code存在于内存中。从我可以告诉可能有几种不同的方式来做到这一点: 天雷的dlopen以为你的记忆位置是一个文件 ..
发布时间:2016-08-17 22:22:53 C/C++

为什么我会得到一个gcc"未定义的引用"错误试图创建共享对象?

为什么我收到一个“未定义引用”错误使用gcc? 我想创建一个共享对象(的.so)出口的某种功能,“外部()”。然后我试图针对的.so链接,但得到“未定义的引用'外部'”。我在做什么错在这里? 文件:external.c INT外部(){ 返回5; } 文件:program.c INT外部(); INT主(字符** argv的,为int *的argc){ 返回外部( ..
发布时间:2016-08-17 21:26:03 C/C++

为什么在gcc的事“-l”选项的顺序?

我试图编译它使用 udis86 库的程序。其实我现在用在图书馆的用户手册给出的示例程序。但是在编译时,它给错误。我得到的错误是: example.c :(文字+为0x7):未定义引用'ud_init“ 。example.c :(文字+为0x7):未定义引用'ud_set_input_file“ 。 。 。example.c :(文字+为0x7):未定义引用'ud_insn_asm“ 我使用 ..
发布时间:2016-08-17 20:45:39 C/C++

如何使用GCC和LD删除未使用的C / C ++的符号?

我要狠狠优化我的可执行文件的大小( ARM 开发)和 我注意到,在我目前的建设方案( GCC + LD )未使用的符号都没有得到剥离。 的使用量臂带--strip-不需要为生成的可执行文件/库不改变可执行文件的输出大小的(我有不知道为什么,也许它根本不能)的 会是什么方式的(如果它存在)的修改我建筑管道,使得未使用的符号是从所得到的文件剥离 我就别想这一点,但我目前的嵌入式环境是不是很“厉 ..
发布时间:2016-08-17 20:34:25 C/C++开发

如何链接适用于iOS静态库

我已创建了一堆的.o 文件(通过 GCC -c $ file.c中$ someotherops -o $ file.o )。现在我想将它们连接成一个静态库。 我不完全相信阉我应该使用 LD 或 GCC 这一点。在 LD 手册,它是说,我不应该直接使用它。不过,我想不通的是gcc参数来创建一个静态库。 我试过 LD *的.o -static -o libfoo.a中,但它抱怨很多缺失的符号(我认 ..
发布时间:2016-08-16 13:10:32 移动开发

G ++无法找到boost库

我在命令行编译并不好。我的问题是无法编译简单的项目,从升压依赖。以下是日志我尝试: $ G ++ -Wall -o TEST.CPP主 /tmp/ccCTvBYE.o:在功能`__static_initialization_and_destruction_0(INT,INT)“: 。TEST.CPP :(文字+ 0x6b):未定义的引用`的boost ::系统:: generic_catego ..
发布时间:2016-08-12 18:38:08 C/C++开发

升压符号未找到

我试图编译/端口的OpenOffice的旧版本。它采用升压v1.34.1,这是源代码树的一部分。该错误消息如下: 未定义的符号: “提振:: throw_exception(性病::例外常量和放大器;)”,从引用: 提高::详细:: SHARED_COUNT :: SHARED_COUNT< ScToken>(ScToken *)在detfunc.o LD:符号(S) ..
发布时间:2016-08-12 17:11:30 C/C++

而连接升压日志教程(未定义的引用)连接错误

我已经安装了通过yum在Fedora 20升压并正尝试一些简单的例子。不过,我有麻烦从记录教程编制的第一个例子。 与 G ++ -c boosttest.cc 编译工作正常,但我得到的错误很多的,当我尝试将它与链接 G ++ boosttest.o -o boosttest -lboost_log -lpthread 完整的错误日志: boosttest.o:在函数'主': boostt ..
发布时间:2016-08-12 17:04:26 C/C++开发

包括与GNU劳工处连接脚本二进制文件

我有一个工作的链接脚本。我要添加其内容直接从文件拉出(LD不应分析它并提取部分等)的另一数据部分。我该怎么做? OUTPUT_FORMAT(“ELF32-I386”) ENTRY(开始) 截面 { 的.text 0x100000处:{ *(多重) *(。文本) *(code) *(* rodata) } 。数据:{ *(。数据) } ..
发布时间:2016-08-06 22:01:31 开发方法

未定义参考主LD

我想链接到文件 - 包含主要的功能和简单的跳转到主的ASM文件中的C文件 我MinGW的安装。 我的文件: // kernel.c 无效some_function(){ } 无效的主要(){ 字符* video_memory =(字符*)0xb8000; * video_memory =“X”; some_function(); }; kernel_entry.asm [比特32] [EX ..
发布时间:2016-07-18 21:51:41 .NET Framework