与Boost和ncurses的静态链接

Static linking with Boost and ncurses

本文关键字:静态 链接 ncurses Boost      更新时间:2023-10-16

我正在制作一款基本的角色扮演游戏。我想静态地包含Boost库,这样运行我的游戏的人就不需要它们了。我研究并查找到,您所要做的就是将-static添加到命令行编译中,所以我的命令如下:

$ g++ -static -o karthas *.o -lncurses -lmenu -lboost_system -lboost_filesystem

但显然-static正在影响ncurses。我收到了一大堆错误,其中大部分都是未定义的对"SP"的引用。

是否可以只做一个到Boost而不是ncurses的静态链接?我该怎么做呢?

您可以选择哪些库将静态链接,哪些库将动态链接,方法是将-Wl,-static-Wl,-Bdynamic放在它们的名称之前。

例如,使用:

g++  -o karthas *.o -Wl,-static -lmenu -lboost_system -lboost_filesystem -Wl,-Bdynamic -lncurses 

菜单、boostrongystem和boost_filesystem库将静态链接,ncurses将动态链接。

(但您也可以将boost dll与可执行文件一起分发,而不是静态链接任何内容)。

但从这一点来看,你似乎并不孤单,或者我发现了你的问题。但这,可能有你的解决方案,无论哪种方式,祝你好运。顺便说一句,有些boost库只不过是包含在文件中时导入的内联函数。