ld相关内容

将NASM和64位C代码一起编译并链接到引导加载程序中

我制作了一个非常简单的1级引导加载程序,它执行两个主要任务:它从16位实模式切换到64位长模式,并且从硬盘读取接下来的几个用于启动基本内核的扇区. /p> 对于基本内核,我试图用C而不是汇编语言编写代码,对此我有一些疑问: 我应该如何编译和链接nasm文件和C文件? 编译文件时,应该编译为16位还是64位?因为我从16位切换到64位. 我如何将C或程序集中的更多文件添加到项目中? ..
发布时间:2020-04-30 08:35:15 其他开发

与GNU LD --export-dynamic标志等效的Solaris链接器

就像这个问题说的那样:我们正在使用GNU链接器在Linux上构建,而在Solaris中使用solaris ld进行构建. GNU ld支持--export-dynamic标志,该标志: 创建动态链接的可执行文件时,请将所有符号添加到动态文件中 符号表.动态符号表是可见的符号集 在运行时从动态对象中删除. 使用solaris链接器等效于此标志是什么? 有吗? 解决方案 默认情况下 ..
发布时间:2020-04-30 08:35:13 其他开发

可以指示GNU ld打印链接期间需要哪些.o文件吗?

一些背景知识:我正在尝试为嵌入式传感器系统构建AVR二进制文件,并且我的运行接近极限.我使用一些外部库来帮助我,但是当每个库编译成一个对象时,它们很大.我想将它们放入较小的对象中,以便仅将我需要的功能链接到程序中.我已经设法通过拆分一个大的库将二进制文件大小减少了2k. 知道在游戏的每个阶段都在使用哪些对象会很有帮助,因此我可以更有效地拆分它们.有没有办法让ld打印它链接的对象? 解决 ..
发布时间:2020-04-30 08:35:09 C/C++开发

在Linux中共享可执行内存页面?

为了节省空间,是否可以在Linux上共享可执行页面?我知道有些共享内存API可用于在不同进程之间共享内存,但我认为这并不是用于此目的的. 基本上,我希望有一个共享内存区域,可以将一些常用的共享库加载到其中.我想让动态链接器链接到预加载的(只读)图像,而不是必须将所有共享库图像加载到每个进程中(这看起来很浪费). 在Linux内核上可能吗?达尔文内核使用称为 commpages 的Mac ..
发布时间:2020-04-30 08:35:03 服务器开发

非标准Framework ld的Xcode警告:警告:找不到选项-F的目录

清除警告,可以看到以下内容: ld: warning: directory not found for option '-F/myPath/etc/myframework' 这是在非标准iOS框架中发生的.如何消除警告? 解决方案 检查链接器ld的手册页会显示-Fdir选项的以下详细信息: 将dir添加到要在其中搜索框架的目录列表. 在目录中搜索用-F指定的目录. 顺序将它 ..
发布时间:2020-04-30 08:35:01 其他开发

避免Unix中的标准库冲突

我有一个共享库(so)对象,该对象公开了C API(extern "C").它不使用API​​中的C ++,也不抛出异常.在内部,它确实使用C ++,尤其是std::map和其他容器,以及一些琐碎的模板. 我的目标是能够将该库提供给Unix中的任何程序(我为每个目标linux发行版编译多个版本),而不会导致加载程序(例如,用即使它是用其他版本的标准库编译的也应该可以正常工作. 这是我通 ..
发布时间:2020-04-30 08:34:57 C/C++开发

gnu ld是链接在整个目标文件中还是仅链接所需的功能?

我们有一个库和一个可执行文件,该文件将被静态链接到库.我们希望最小化最终可执行文件的程序空间. 根据avr-libc的文档: 该功能所在的整个对象模块中的链接器链接 另一方面,我的同事们一致认为,链接器会丢弃一些未使用的功能. 那么谁是正确的,或者我误会了什么?在整个gcc中答案是一致的吗?还是我们在这里只说avr端口? 解决方案 除非您告知,否则它不会执行无效代码 ..
发布时间:2020-04-30 08:34:46 其他开发

在您建立的库中的CMake中使用--whole-archive

在构建静态库并将其与其他代码链接到可执行文件时,我有一个CMake项目.由于我不愿讨论的原因,我希望使用--whole-archive链接器标志进行此链接. 现在,此标志非常棘手,因为您不能仅将其添加到任何地方-您必须对其进行切换,然后列出要对其应用的库,然后取消对其进行切换. 我已经读到某个地方(URL逃脱了我),如果您已有一个预先存在的库,则可以通过执行以下操作来有效地添加此链接器 ..
发布时间:2020-04-30 08:34:44 其他开发

如何设置2个字节的wchar_t输出?

默认情况下,GCC使用4字节的wchar_t.我可以将选项-fshort-wchar设置为在L"string constants"中每个wchar_t获得2个字节.但是,当我将编译器选项设置为源文件时,会收到著名的警告消息 foo.o使用2字节wchar_t,但输出将使用4字节wchar_t.在对象之间使用wchar_t值可能会失败 因为我真的想要2字节wchar_t,所以我也希望输出 ..
发布时间:2020-04-30 08:34:40 其他开发

ld链接问题:/usr/bin/ld:找不到[库名]

我正在使用Qmake在Ubuntu 9.10上构建共享库 此共享库(A)依赖于另一个共享库(B). 项目B已成功构建. 在项目A的.pro文件中,我的LIBS变量如下所示: LIBS += -L../datelib/bin -llibdatelib_release.so.1.0.0 (我使用了完整的shlib名称,因为库的版本不同.) 无论如何,当我尝试构建项目A ..
发布时间:2020-04-30 08:34:36 其他开发

链接时,“获取所需内容"和“获取所需内容"之间是否有关联?和“全部抓取" (-Wl,-整体存档)?

我有一个包含一些静态初始化代码的库,需要在main()之前运行.如果您只将所有翻译单元一起编译,那么一切都很好,但是如果我提供了一个静态库(.a文件)并让用户将其应用程序链接到它,则它不起作用-链接器只是忽略了这样做的符号我的静态初始化. 或者,如果我为GCC指定了-Wl,--whole-archive选项,即为GNU链接指定了--whole-archive选项,则可以使链接程序在静态库中提 ..
发布时间:2020-04-30 08:34:34 C/C++开发

GNU ld无法找到存在的库

我在这里使用的软件包是一个未知数,但是尽管如此,这个问题还是很普遍的.基本上,我正在尝试编译具有C ++扩展名的Python模块(称为rql).该扩展使用名为gecode的外部框架,该框架包含多个库.我编译了gecode并在本地安装.现在,让输出说明一切: red@devel:~/build/rql-0.23.3$ echo $LD_LIBRARY_PATH /home/red/usr/li ..
发布时间:2020-04-30 08:34:32 C/C++开发

QtCreator构建返回collect2:ld返回退出状态1

在QtCreator中构建几个不同的项目时,我遇到了以下构建错误: collect2: ld returned 1 exit status 仅更改了几处内容(不应更改构建中的重要内容)之后,如果它已经出现,则将消失,或者如果不存在,它将消失. 在我当前用于学校项目的程序中,我正在尝试编译rock03.cpp.它是构建中的唯一文件,并且具有main()方法.我刚刚成功运行它,然后又返 ..
发布时间:2020-04-30 08:34:30 C/C++开发