Показать сообщение отдельно
Старый 22.09.2015, 15:39   #58
killdozer
Гость
 
Сообщений: n/a
По умолчанию

Собирал 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
  Ответить с цитированием
Пользователь сказал cпасибо:
Amaru (22.09.2015)