106得票9回答
编译失败,报错信息为“当制作共享对象时,重定位R_X86_64_32无法用于`.rodata.str1.8'”。

我试图在一个64位Cent OS的VPS上从makefile编译这个源代码,但是它不起作用。 以下是完整的错误信息:# make gcc -c -O3 -w -DLINUX -I../SDK/amx/ ../SDK/amx/*.c g++ -c -O3 -w -DLINUX -I../SDK...

103得票1回答
"--start-group"和"--end-group"命令行选项是什么?

这些命令行选项的目的是什么?请帮忙解释以下命令行的含义:-Wl,--start-group -lmy_lib -lyour_lib -lhis_lib -Wl,--end-group -ltheir_lib 显然这与链接有关,但GNU手册并没有明确说明“grouping”具体指什么。

99得票9回答
内联函数中的静态变量

我有一个在头文件中声明和定义的函数。这本身就是一个问题。当该函数未被内联时,每个使用该头文件的翻译单元都会得到该函数的副本,并且当它们被链接在一起时会出现重复。我通过使该函数成为内联函数来“修复”此问题,但我担心这是一个脆弱的解决方案,因为据我所知,即使指定了"inline"关键字,编译器也不...

98得票2回答
将两个使用GCC编译的.o目标文件合并成第三个.o文件

如何将两个由GCC编译的.o目标文件合并为第三个.o文件?$ gcc -c a.c -o a.o $ gcc -c b.c -o b.o $ ??? a.o b.o -o c.o $ gcc c.o other.o -o executable 如果您可以访问源文件,则-combine GC...

97得票5回答
静态库、静态链接的动态库和动态链接的动态库中的.lib文件包含了什么内容?

静态库、静态链接动态库和动态链接动态库的 .lib 文件里面有什么? 为什么动态链接动态库不需要 .lib 文件,而在静态链接中,.lib 文件只是一个包含所有方法的 .obj 文件。这样理解正确吗?

93得票8回答
将ld替换为gold - 有任何经验吗?

有人尝试过使用gold替代ld吗? gold 承诺比ld快得多,因此它可能有助于加速大型C++应用程序的测试周期,但它能否作为ld的即插即用替代品使用呢? gcc/g++是否可以直接调用gold? 是否有任何已知的错误或问题? 虽然gold已经是GNU二进制工具集的一部分了一段时间,但...

93得票4回答
共享库中未解决符号的简易检查方法?

我正在编写一个相当大的C++共享对象库,遇到了一个小问题,使得调试很麻烦: 如果我在头文件中定义一个函数/方法,并且忘记为它创建存根(在开发过程中),因为我正在构建共享对象库而不是可执行文件,没有错误出现在编译时告诉我已经忘记实现该函数。唯一的方法是在运行时找出有问题,当最终链接到这个库的应...

90得票3回答
为什么不建议静态链接glibc?

大多数在线资源都表明您可以静态链接glibc,但不建议这样做。例如,CentOS软件包仓库: glibc-static软件包包含用于静态链接的C库静态库。除非您静态链接,否则您不需要它们,这是极其不建议的。 这些来源很少(或从不)说明为什么这是一个坏主意。

89得票7回答
C语言中的共享全局变量

我该如何创建在C中共享的全局变量?如果将其放在头文件中,则链接器会抱怨变量已经定义。难道唯一的方法是在我的一个C文件中声明变量,并在想使用它的所有其他C文件的顶部手动添加extern吗?这听起来不太理想。

87得票1回答
什么是.exp的作用?.lib和.dll有什么区别?

在编译和链接期间,.exp文件有什么作用?.lib和.dll文件有什么区别?我知道在链接时会使用.lib文件,在运行程序时会使用.dll文件。但是.lib和.dll之间到底有什么区别呢? .lib文件中是否不包含来自.dll文件的函数代码?为什么需要使用两个单独的文件? 请澄清一下。