Сборка OpenGL SuperBible 7 для CentOS 7, отсутствует glfw3 - PullRequest
0 голосов
/ 05 октября 2018

Проблема

Я работаю с CentOS 7 и пытаюсь исправить проблему с помощью инструкций по сборке, особенно при попытке найти библиотеку glfw.Следуя инструкциям из файла HOWTOBUILD.txt (доступного из репозитория SB7 git), я регулярно получал сообщение об ошибке при запуске команды make:

[sweet_ass_user_name@bitchin_camaro build]$ make
Scanning dependencies of target sb7
[  1%] Building CXX object CMakeFiles/sb7.dir/src/sb7/sb7.cpp.o
[  1%] Building CXX object CMakeFiles/sb7.dir/src/sb7/sb7color.cpp.o
[  2%] Building CXX object CMakeFiles/sb7.dir/src/sb7/sb7ktx.cpp.o
[  2%] Building CXX object CMakeFiles/sb7.dir/src/sb7/sb7object.cpp.o
/usr/local/opengl/SDK_Sandbox/sb7code/src/sb7/sb7object.cpp: In member function ‘void sb7::object::render_sub_object(unsigned int, unsigned int, unsigned int)’:
/usr/local/opengl/SDK_Sandbox/sb7code/src/sb7/sb7object.cpp:212:77: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
                                             (void*)sub_object[object_index].first,
                                                                             ^
[  3%] Building CXX object CMakeFiles/sb7.dir/src/sb7/sb7shader.cpp.o
[  4%] Building CXX object CMakeFiles/sb7.dir/src/sb7/sb7textoverlay.cpp.o
[  4%] Building C object CMakeFiles/sb7.dir/src/sb7/gl3w.c.o
[  5%] Linking CXX static library lib/libsb7.a
[  5%] Built target sb7
Scanning dependencies of target wrapmodes
[  6%] Building CXX object CMakeFiles/wrapmodes.dir/src/wrapmodes/wrapmodes.cpp.o
[  7%] Linking CXX executable ../bin/wrapmodes
/usr/bin/ld: cannot find -lglfw3
collect2: error: ld returned 1 exit status
make[2]: *** [../bin/wrapmodes] Error 1
make[1]: *** [CMakeFiles/wrapmodes.dir/all] Error 2
make: *** [all] Error 2

Чтобы сделать вещи более запутанными, Я уже установил эти пакеты:

  • glfw
  • glfw-devel

При проверке установленных пакетов glfw с rpm -qa | grep glfw моя системавозвращает:

glfw-3.2.1-2.el7.x86_64
glfw-devel-3.2.1-2.el7.x86_64

Очевидно, что установленная библиотека glfw является версией 3 glfw библиотеки.

Тем не менее, почему система не распознает ее?


Справочная информация и системная информация

OS: centos-release-7-5.1804.4.el7.centos.x86_64
OpenGL: 4.6.0 NVIDIA 396.37
GPU: GV100
Optix: 5.1
CUDA: 9.2
CMake: cmake3, cmake3-gui
OpenGL libraries:
    mesa-libGLU-9.0.0-4.el7.x86_64
    mesa-libGLES-17.2.3-8.20171019.el7.x86_64
    mesa-libGLU-devel-9.0.0-4.el7.x86_64
    mesa-libwayland-egl-17.2.3-8.20171019.el7.x86_64
    mesa-libGL-17.2.3-8.20171019.el7.x86_64
    mesa-filesystem-17.2.3-8.20171019.el7.x86_64
    mesa-libEGL-17.2.3-8.20171019.el7.x86_64
    mesa-dri-drivers-17.2.3-8.20171019.el7.x86_64
    mesa-libglapi-17.2.3-8.20171019.el7.x86_64
    mesa-libxatracker-17.2.3-8.20171019.el7.x86_64
    mesa-libGL-devel-17.2.3-8.20171019.el7.x86_64
    mesa-libgbm-17.2.3-8.20171019.el7.x86_64
Graphics Misc Libs:
    libX11-common-1.6.5-1.el7.noarch
    libX11-1.6.5-1.el7.x86_64
    libX11-devel-1.6.5-1.el7.x86_64
    libXinerama-1.1.3-2.1.el7.x86_64
    libXinerama-devel-1.1.3-2.1.el7.x86_64
    glfw-3.2.1-2.el7.x86_64
    glfw-devel-3.2.1-2.el7.x86_64

Ссылки

1 Ответ

0 голосов
/ 05 октября 2018

Ответ

Оказывается, из-за запутанной проблемы с именами, касающейся различий между пакетом glfw и glfw , ответом было просто изменитьфайл CMakeLists.txt (ссылка здесь: SB7 CMakeLists.txt )

В строке 28 требуется удалить один символ.Измените glfw3 на glfw .

НО !!

Также нельзя переименовывать имя glfw3 из строки выше,Я могу только предположить, что это относится к версии glfw3, а не к имени пакета.


Теперь сборки кода и все сборки работают нормально.


Дополнительные примечания

Для системы centos7 и для работы с текущими правилами сборки для CUDA вам нужно запустить cmake3 .. (вместо cmake)


Фиксированный код

cmake_minimum_required (VERSION 2.6)

project (superbible7)

LINK_DIRECTORIES( ${CMAKE_SOURCE_DIR}/lib )

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)

# Second, for multi-config builds (e.g. msvc)
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
    string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
    set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_SOURCE_DIR}/bin )
    set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_SOURCE_DIR}/lib )
    set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_SOURCE_DIR}/lib )
endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )

find_package(OpenGL)

set (CMAKE_DEBUG_POSTFIX "_d")

if(WIN32)
set(COMMON_LIBS sb7 optimized glfw3 debug glfw3_d ${GLFW_LIBRARIES} ${OPENGL_LIBRARIES})
elseif (UNIX)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GLFW REQUIRED glfw3)
set(COMMON_LIBS sb7 glfw X11 Xrandr Xinerama Xi Xxf86vm Xcursor GL rt dl)
else()
set(COMMON_LIBS sb7)
endif()
...