Статическое связывание libtcod

Я безуспешно пытаюсь статически связать libtcod с моим проектом C++. Я получаю много ошибок связывания, в том числе:

./tuto: ошибка при загрузке общих библиотек: libtcodxx.so.1: невозможно открыть общий объектный файл: нет такого файла или каталога

У кого-нибудь были подобные проблемы с этой библиотекой?


person vinnylinux    schedule 30.07.2014    source источник


Ответы (2)


В текущем дистрибутиве libtcod (1.6.0) есть динамические библиотеки. Вы можете связать libtcod динамически, но вам нужно создать символические ссылки:

    cd /var/lib/libtcod
    ln -s libtcod.so libtcod.so.1
    ln -s libtcodxx.so libtcodxx.so.1

Скомпилируйте с помощью следующей команды:

    g++ src/*.cpp -o tuto -I/var/lib/libtcod/include -L/var/lib/libtcod -ltcod -ltcodxx -Wl,-rpath=/var/lib/libtcod -Wall
person mpiliszcz    schedule 15.12.2014

Какие флаги вы используете при подключении к библиотеке? Вы использовали флаг -static, указали ли вы -ltcod? Если нет, добавьте -static -ltcod в конец командной строки. Или вы можете принудительно сказать gcc связать со статической встроенной библиотекой: gcc %YOUR_OTHER_FLAGS_ANDFILES% -l:libtcod.a -L%PATH_TO_TCOD_STATIC_BUILDED_FILE%

person Edward    schedule 30.07.2014
comment
Я использовал следующее: g++ src/*.cpp -o tuto -I/var/lib/libtcod/include -L/var/lib/libtcod -ltcod -ltcodxx -Wl,-rpath=. -Стена -статическая - person vinnylinux; 30.07.2014
comment
Я клонировал libtcod и скомпилировал его для Linux, 32 бит. Находится в /var/lib/libtcod - person vinnylinux; 30.07.2014
comment
попробуй так: g++ src/*.cpp -o tuto -I/var/lib/libtcod/include -L/var/lib/libtcod -l:/var/lib/libtcod.a -l:/var/lib/libtcodxx.a -Wl,-rpath=. -Wall - person Edward; 31.07.2014