LINUX.ORG.RU

Ошибка при линковке исполняемого файла

 , ,


0

1

Решил собрать древнюю игруху:
https://github.com/stt/pk2
для успешной сборке мне потребовалось добавить в .CPP-файлы следующее:

#include <unistd.h>
#include <sys/stat.h>

Однако, под конец сборки вылезает ошибка:
/usr/bin/ld: cannot find -lpiste
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
make[2]: *** [CMakeFiles/PK2.dir/build.make:151: PK2] Ошибка 1
make[1]: *** [CMakeFiles/Makefile2:68: CMakeFiles/PK2.dir/all] Ошибка 2
make: *** [Makefile:84: all] Ошибка 2

В файле link.txt, который мне сгенерировал cmake, действительно есть упоминание piste:

/usr/bin/c++      CMakeFiles/PK2.dir/PK2.cpp.o CMakeFiles/PK2.dir/PK2Map.cpp.o CMakeFiles/PK2.dir/PK2Sprite.cpp.o  -o PK2  -L../PisteEngineSDL -Wl,-rpath,../PisteEngineSDL -rdynamic -Wl,-Bstatic -lSDLmain -Wl,-Bdynamic -lSDL -lpthread -lSDL_image -lSDL_mixer -lSDL_gfx -lpiste 

У меня есть подозрение, что в этом старом проекте что-то не так настроено, либо у меня что-то недособралось.

★★★★

libpiste - собирается в pk2/PisteEngineSDL/CMakeLists.txt
add_library(piste STATIC ${SOURCES})
как статическая либа и нужно указать где ее искать -
через опцию -L путь перед -lpiste

sigurd ★★★★★
()
Последнее исправление: sigurd (всего исправлений: 1)

link_directories(../PisteEngineSDL/)

Попробуй сперва этот PisteEngineSDL собрать. Прямо в директории с исходниками. А вообще странно в этом проекте сборка настроена.

dvetutnev
()
Ответ на: комментарий от dvetutnev

Я отдельно собрал PisteEngineSDL без проблем. На выходе имею бинарник Game и файл libpiste.a.

Я вот не пойму, когда cmake видит параметр -lpiste, что он хочет найти?

kknight ★★★★
() автор топика
Ответ на: комментарий от sigurd

Скопировал libpiste.a в /usr/lib64 и всё собралось!

Теперь оно не хочет запускаться, но это уже другая история...

kknight ★★★★
() автор топика
Ответ на: комментарий от kknight

когда cmake видит параметр -lpiste, что он хочет найти?

Ну не cmake, а линкер из g++
-lpiste ищет libpiste.a или libpiste.so
-L../PisteEngineSDL у тебя указан - там должна быть собрана либа с таким именем

sigurd ★★★★★
()
Последнее исправление: sigurd (всего исправлений: 1)

Я собрал, у меня запускается, но из-за того, что Data-файлы под винду с РаЗнЫм регистром — что-то отваливается, вроде звука и прочего.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Там в архиве по ходу только движок, сами данные, видимо, нужно брать из виндовой версии игры. Я попробовал, и у меня сыпется что-то от SDL:

~/Sources/pk2-master/Pekka Kana 2/build $ ./PK2 
fon? language/fonts/ ScandicSmall.txt
fon? language/fonts/ ScandicBig1.txt
fon? language/fonts/ ScandicBig2.txt
fon? language/fonts/ ScandicBig3.txt
fon? language/fonts/ ScandicBig1.txt
fon? language/fonts/ ScandicBig2.txt
fon? language/fonts/ ScandicBig3.txt
PisteSFX_Lataa_WAV(sfx/switch3.wav): Mix_LoadWAV_RW with NULL src
PisteSFX_Lataa_WAV(sfx/pump.wav): Mix_LoadWAV_RW with NULL src

У вас так же?

kknight ★★★★
() автор топика
Ответ на: комментарий от CYB3R

Блин, как я раньше об этом не подумал... Игра собралась без проблем из этой репы:

https://github.com/danilolc/pk2

Спасибо всем за ценные советы!

kknight ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.