Статическое связывание с Boost и ncurses - PullRequest
2 голосов
/ 14 марта 2012

Я нахожусь в процессе создания основной ролевой игры. Я хочу включить библиотеки Boost статически, чтобы люди, запускающие мою игру, не нуждались в них. Я исследовал и посмотрел, что все, что вам нужно сделать, это добавить -static к компиляции командной строки, поэтому моя команда выглядит так:

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

Но, очевидно, -static влияет на ncurses. Я получаю целую кучу ошибок, большинство из которых являются неопределенными ссылками на 'SP'.

Можно ли просто сделать статическую ссылку на Boost, а не ncurses? Как бы я поступил так?

Ответы [ 2 ]

4 голосов
/ 14 марта 2012

Вы можете выбрать, какие библиотеки будут связаны статически, а какие - динамически, указав -Wl,-static или -Wl,-Bdynamic перед их именем.

Например, с помощью:

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

Меню, библиотеки boost_system и boost_filesystem будут связаны статически, а ncurses динамически.

(Но вы также можете распространять dll-файлы boost с вашим исполняемым файлом и ничего не связывать статически).

0 голосов
/ 14 марта 2012

Но, глядя на на , кажется, что вы не одиноки или я нашел вашу проблему. Но это может иметь ваше решение, в любом случае, удачи. Кстати, некоторые библиотеки boost - это не что иное, как встроенные функции, которые импортируются при включении в файл.

...