gpt4 book ai didi

c++ - 是否可以为给定的静态库人为地诱导目标文件提取?

转载 作者:太空宇宙 更新时间:2023-11-04 10:26:43 25 4
gpt4 key购买 nike

我最近在读 this answer并注意到用户必须以正确的顺序链接静态库似乎很不方便。

是否有标志或#pragma我可以传递给 gcc 在编译我的库时以便始终包含我的库的目标文件?

更具体地说,我希望用户可以在另一个依赖它的库之前链接我的静态库,而不是以未解析的符号结束,就像在上明确指定的目标文件一样链接器行是。

特别是,我正在寻找图书馆用户不需要做任何特殊事情,只需要通过 -lMylibrary 的解决方案。他们链接任何其他图书馆的方式。

最佳答案

Is there some flag or #pragma I can pass to gcc

没有。

I want it to be case that the user can link my static library before another library that depends on it, and not wind up with unresolved symbols, in the same way that object files which are explicitly specified on the linker line are.

将您的“库”作为单个目标文件发送。换句话说,而不是:

ar ru libMyLibrary.a ${OBJS}

使用:

ld -r -o libMyLibrary.a ${OBJS} 

In particular, I am looking for solutions where the user of the library does not need to do anything special, and merely needs to pass -lMylibrary the way they would link any other library.

您可以将目标文件命名为 libMyLibrary.a。我相信链接器会使用通常的规则搜索它,但是当它找到它时,它会发现这是一个目标文件,并以此对待它,尽管它被“错误命名”。这至少应该适用于 Linux 和其他 ELF 平台。我不确定它是否适用于 Windows。

关于c++ - 是否可以为给定的静态库人为地诱导目标文件提取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41274847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com