我正在制作一个基本的角色扮演游戏。我想静态地包含 Boost 库,以便运行我的游戏的人不需要拥有它们。我研究并查找了所有你需要做的就是添加-static
到命令行编译,所以我的命令是这样的:
$ g++ -static -o karthas *.o -lncurses -lmenu -lboost_system -lboost_filesystem
但显然-static
正在影响 ncurses。我收到一大堆错误,其中大多数是对“SP”的未定义引用。
是否可以只静态链接到 Boost 而不是 ncurses?我该怎么做呢?
您可以选择哪些库将静态链接,哪些库将动态链接,方法是将-Wl,-static
or -Wl,-Bdynamic
在他们的名字之前。
例如,与:
g++ -o karthas *.o -Wl,-static -lmenu -lboost_system -lboost_filesystem -Wl,-Bdynamic -lncurses
菜单、boost_system 和 boost_filesystem 库将静态链接,ncurses 动态链接。
(但是您也可以将 boost dll 与可执行文件一起分发,而不是静态链接任何内容)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)