相关疑难解决方法(0)

使用多个核心使用g ++进行编译

快速提问:什么是编译器标志,允许g ++生成自身的多个实例,以便更快地编译大型项目(例如,一次为多核CPU提供4个源文件)?

非常感谢.

c++ compiler-construction multicore makefile g++

166
推荐指数
8
解决办法
14万
查看次数

连接子做什么?

我一直在想.我知道编译器会将您编写的代码转换为二进制文件,但链接器的作用是什么?对我来说,它们一直是个谜.

我粗略地理解'链接'是什么.当对库和框架的引用添加到二进制文件时.除此之外我什么都不懂.对我来说它"只是有效".我也理解动态链接的基础知识,但没有太深入.

有人可以解释这些条款吗?

c++ linker dynamic-linking

111
推荐指数
4
解决办法
5万
查看次数

什么是"增量链接"?

我看过微软的MSDN和网络上的所有内容,但我仍然无法真正了解它是什么.

这是否意味着已完成的程序在执行期间的不同时间加载DLL,因为它们在启动时立即被应用于所有DLL?

我完全离开了吗?:)

incremental-linking

101
推荐指数
2
解决办法
4万
查看次数

链接时gcc可以使用多个内核吗?

因此,当使用GCC编译大量源文件时,可以使用-j来使用所有可用内核.但链接器怎么样?是否有类似的选项来加速链接或GCC不支持多线程?在一些较大的项目中,它可能需要一段时间......(......我讨厌等待!)

编辑:感谢您指出-j是make的选项,而不是gcc/g ++.但这不能回答我的问题!我想知道gcc是否可以在链接程序时使用多线程!

linker gcc

28
推荐指数
4
解决办法
8025
查看次数

如何加快我的CMake启用C++项目的编译时间?

我最近遇到了几个关于改善CMake启用C++项目周转时间的具体方面的问题(比如"我应该在什么级别分配我的构建过程?""cmake rebuild_cache 只是一个子目录?"),我是想知道是否有更一般的指导利用CMake提供的特定可能性.如果可能没有跨平台编译时优化,我主要对Visual Studio或基于GNU toochain的方法感兴趣.

我已经意识到并投资了一般推荐的领域来加速C++构建:

  1. 更改/优化/微调工具链

  2. 优化您的代码库/软件架构(例如,通过减少依赖关系并使用明确定义的子项目 - 单元测试)

  3. 投资更好的硬件(SSD,CPU,内存)

喜欢在这里,这里这里推荐.所以我在这个问题上的重点是第一点.

另外我知道在CMake的Wiki中可以找到的建议:

前者只处理基础(并行make),后者主要处理如何加速解析CMake文件.

为了使这更具体一点,如果我从这里使用MSYS/GNU的100个库获取我的CMake示例,我得到了以下time测量结果:

$ cmake --version
cmake version 3.5.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).

$ time -p cmake -G "MSYS Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
-- Configuring done
-- Generating done
-- Build files have been written to: [...]
real 27.03
user …
Run Code Online (Sandbox Code Playgroud)

performance nmake compilation cmake gnu-make

14
推荐指数
1
解决办法
1万
查看次数

什么是GNU链接器中的部分链接?

我能找到的最佳解释来自官方文件:

-r --relocateable生成可重定位输出 - 即生成一个输出文件,该输出文件又可以作为ld的输入.这通常称为部分链接.作为副作用,在支持标准Unix幻数的环境中,此选项还将输出文件的幻数设置为OMAGIC.如果未指定此选项,则会生成绝对文件.链接C++程序时,此选项不会解析对构造函数的引用; 要做到这一点,请使用-Ur.此选项与`-i'的作用相同.

我特别想知道链接器输入中出现的符号会发生什么.当我有一个包含单个目标文件component.o的静态库libstatic.a时,请考虑具体情况.现在,我想创建另一个静态库libfinal.a,它将作为libstatic.a的接口.我用这个命令来创建它:

ld -r -o libfinal.a wrapper.o -L. -lstatic

其中wrapper.o提供了独有的API来调用libstatic.a中定义的函数

请问libfinal.a将只具有合并的归档文件wrapper.ocomponent.o或可待解决的所有引用wrapper.ocomponent.o来解决(连接),然后放入libfinal.a

Edit_1:根据所取得的进展更新问题:组件库()的objdump分别显示每个函数的部分(如预期的那样).在组合库中,由部分链接(flag)创建的只有一个部分.我想这意味着内部链接已经发生,而且不仅仅是创建一个普通的存档.libstatic.aobjdump -D libstatic.a.textlibfinal.a-r.text

c linker

13
推荐指数
2
解决办法
4763
查看次数

lld链接器是ld和gold的直接替代品吗?

目前,LLVM项目中链接器lld开发时每周都会添加新功能.它的开发人员承诺lld比它快ld.与之相比,它如何竞争gold

lld是替代品ld吗?随着黄金有一些箍通过跳跃.

linker lld

12
推荐指数
2
解决办法
4627
查看次数

加快链接速度/ Linux上的快速链接

我每隔十​​分钟就建立webkit(200万行代码)以查看我的更改输出,并且我的机器上的webkit链接需要处理600-700 MB的目标文件,这些文件位于我的硬盘上.这需要大约1.5分钟.我想加快这个链接过程.

有没有机会,我可以告诉操作系统只将所有目标文件保存在RAM中(我有4 GB的ram).有没有其他方法来加快链接?

任何想法或帮助表示赞赏!

这是一个需要1.5分钟的命令,

http://pastebin.com/GtaggkSc

c++ linux linker

11
推荐指数
1
解决办法
5027
查看次数

Gcc collect2:致命错误:找不到“ld”

我正在阅读有关在http://wiki.osdev.org/Bare_Bones上制作操作系统的教程。当我尝试使用以下命令链接 boot.o 和 kernel.o 时:i686-elf-gcc -T linker.ld -o myos.bin -ffreestanding -O2 -nostdlib boot.o kernel.o -lgcc,我得到了这个错误:

collect2: fatal error: cannot find 'ld'
compilation terminated.
Run Code Online (Sandbox Code Playgroud)

我刚刚安装了带有gcc-5.2.1binutils-2.25.1 的全新 Ubuntu 15.10 。我在互联网上搜索了答案,但没有任何帮助。

c gcc cross-compiling ubuntu-15.10

5
推荐指数
2
解决办法
2万
查看次数