42得票1回答
制作库时,ranlib、ar和ld有什么区别?

在我的项目(遗留代码)中,我注意到了两种使用*.o文件生成C++/Unix库的方法:ar qc libgraphics.a *.o ranlib libgraphics.a 和ld -r -o libgraphics.a *.o 这两种方法有何不同,应该分别用于什么目的?

42得票1回答
GCC中的“-Wl,option”和“-Xlinker option”语法有区别吗?

我一直在查阅一些配置文件,发现它们在不同的架构上都有使用(尽管不同)。如果您在Linux系统上使用GCC,那么使用这两种语法将选项传递给链接器之间是否有区别? 通过阅读GCC手册,我发现它们的解释几乎完全相同。

41得票4回答
汇编语言中的global _start是什么?

这是我的汇编语言代码...section .text global _start _start: mov eax, 4 mov ebx, 1 mov ecx, mesg mov edx, size int 0x80 exit: ...

40得票2回答
什么是C++中的“关键函数”(Key Function),如Gold所描述?

请不要回答“如何解决这个错误信息”的问题。 在gold提供的错误信息中: /usr/bin/ld.gold: the vtable symbol may be undefined because the class is missing its key function 什么是“关键函...

39得票3回答
通过两次链接同一库解决循环依赖?

我们有一个被分解成静态库的代码库。不幸的是,这些库存在循环依赖关系;例如,libfoo.a 依赖于 libbar.a,反之亦然。 我知道处理这种情况的“正确”方法是使用链接器的 --start-group 和 --end-group 选项,像这样:g++ -o myApp -Wl,--sta...

39得票3回答
当存在同名的共享库时,我该如何强制链接静态库?

假设我有一个名为main.cpp的文件,其中使用了在libmath中定义的sin()函数。另外假设我们在同一个目录中同时拥有libmath.a和libmath.so。现在,如果我输入命令g++ -o main main.cpp -lmath,Linux的默认行为是链接到共享库libmath.s...

38得票2回答
声明一个类型为vector<shared_ptr<int>>的变量时出现段错误

代码 这是导致段错误的程序。 #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;memory&gt; int main() { std::cout &lt;&lt; "Hello World" &lt;...

38得票9回答
从内存中的dlopen?

我正在寻找一种直接从内存中加载生成的目标代码的方法。 我知道如果将其写入文件,可以调用dlopen动态加载其符号并链接它们。 但是,考虑到它最初在内存中,被写入到磁盘上,然后再由dlopen重新加载到内存中,这似乎有点绕。 我想知道是否有一种动态链接存在于内存中的目标代码的方法。从我所了解的...

38得票4回答
如何确定最快的链接顺序?

我有大约50个不同的静态库链接到我的C++项目中,平均链接时间为70秒。 我发现改变库的链接顺序会改变这个时间。如果链接器不必在它建立的整个符号表中搜索一组符号,那么我想这是可以预料的。 我想我可以使用"nm"获取静态库之间的依赖关系图。然而,这只会给我一个"正确"的链接顺序。获取最快链接...

35得票2回答
如何默认在默认链接器搜索路径之前添加GCC?LIBRARY_PATH无效。

我正在尝试找出如何设置一些环境变量,使得g++链接到正确版本的库。/usr/lib64中有一些旧版的boost库(链接这些库会失败),而新版库在/v/users/regel/lib中。因此,链接器应该链接到新版库。命令:$ g++ test.cpp -lboost_system -L/v/us...