Собирал classic на freebsd 10.2, тоже наткнулся на такую ошибку при линковке.
Как я понял означает она, что формат отладочной информации включенный в код при компиляции "несколько" новее и дефолтный линкер в системе его не понимает.
дефолтный линкер у меня:
Код:
/usr/bin/ld -v
GNU ld 2.17.50 [FreeBSD] 2007-07-03
хотя есть и такой из binutils:
Код:
/usr/local/bin/ld -v
GNU ld (GNU Binutils) 2.25
с ходу не смог cmake заставить использовать линкер из binutils, особо не вникал.
поэтому принудительно заставил генерить отладочную инфу в старом варианте:
Код:
cmake ../classic -DCMAKE_INSTALL_PREFIX=/home/mangos/run -DINCLUDE_BINDINGS_DIR=ScriptDev2 -DDEBUG=1 -DCMAKE_CXX_FLAGS='-gdwarf-2 -gstrict-dwarf'
Это еще не все, почему то у меня cmake заставляет компилить g3dlite с помощью clang, поэтому принудительно делаем:
Код:
CC=gcc CXX=g++ cmake ........
и еще патч, иначе не соберется:
Код:
diff --git a/dep/include/g3dlite/G3D/System.h b/dep/include/g3dlite/G3D/System.h
index 3183064..ed14d4a 100755
--- a/dep/include/g3dlite/G3D/System.h
+++ b/dep/include/g3dlite/G3D/System.h
@@ -20,6 +20,10 @@
#include "G3D/BinaryFormat.h"
#include <string>
+#ifdef G3D_FREEBSD
+# include <sys/_timeval.h>
+#endif
+
#ifdef G3D_OSX
# include <CoreServices/CoreServices.h>
#endif
diff --git a/dep/src/g3dlite/FileSystem.cpp b/dep/src/g3dlite/FileSystem.cpp
index e51098a..11729f4 100644
--- a/dep/src/g3dlite/FileSystem.cpp
+++ b/dep/src/g3dlite/FileSystem.cpp
@@ -31,6 +31,8 @@
# include <dirent.h>
# include <fnmatch.h>
# include <unistd.h>
+# define O_LARGEFILE 0100000
+# define stat64 stat
# define _getcwd getcwd
# define _stat stat
#endif