Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++11 无法链接SDL/GLT/GLM Ubuntu_C++11_Opengl_Gcc_Sdl_Glut - Fatal编程技术网

C++11 无法链接SDL/GLT/GLM Ubuntu

C++11 无法链接SDL/GLT/GLM Ubuntu,c++11,opengl,gcc,sdl,glut,C++11,Opengl,Gcc,Sdl,Glut,我实际上在我的虚拟机上使用openGL projet,但我需要openGL 4.5,所以我已经在我的笔记本电脑上安装了ubuntu(GTX 870M),它与4.5兼容(我向glxinfo查询)。但我的问题是在安装gcc、build-essential、libglew-dev、freelut3-dev、freelut3和SDL2之后。我无法生成我的项目,因为我在«SDL_WasInit»,«glBegin»上有未定义的引用等错误。。。。对于所有已安装的库 我尝试使用makefile,如: ifeq

我实际上在我的虚拟机上使用openGL projet,但我需要openGL 4.5,所以我已经在我的笔记本电脑上安装了ubuntu(GTX 870M),它与4.5兼容(我向glxinfo查询)。但我的问题是在安装gcc、build-essential、libglew-dev、freelut3-dev、freelut3和SDL2之后。我无法生成我的项目,因为我在«SDL_WasInit»,«glBegin»上有未定义的引用等错误。。。。对于所有已安装的库

我尝试使用makefile,如:

ifeq "$(shell uname)" "Darwin"
LIBGL=  -framework OpenGL
else
    LIBGL=  -lGLU -lGL
endif

CXXFLAGS += `pkg-config glew --cflags` `sdl2-config --cflags` -g -W -Wall -Wno-unused-parameter -Wno-deprecated-declarations
LDFLAGS += `pkg-config glew --libs` `sdl2-config --libs` $(LIBGL)

all : main.exe
run : main.exe
        ./main.exe
main.exe : main.cpp *.h
        $(CXX) $(CXXFLAGS) $(LDFLAGS) -o$@ main.cpp

sol : main_solution.exe
runs : main_solution.exe
        ./main_solution.exe
main_solution.exe : main_solution.cpp *.h
        $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ main_solution.cpp

clean :
        rm -f *.o *.exe
cmake_minimum_required(VERSION 3.3)
project(src)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lglut -lGLU -lGL -lGLEW -lm -lSDL2 -lSDL2main -Wall -g")

set(SOURCE_FILES
        """ALL SOURCE FILES"""")

add_executable(src ${SOURCE_FILES})
使用cmakefile,例如:

ifeq "$(shell uname)" "Darwin"
LIBGL=  -framework OpenGL
else
    LIBGL=  -lGLU -lGL
endif

CXXFLAGS += `pkg-config glew --cflags` `sdl2-config --cflags` -g -W -Wall -Wno-unused-parameter -Wno-deprecated-declarations
LDFLAGS += `pkg-config glew --libs` `sdl2-config --libs` $(LIBGL)

all : main.exe
run : main.exe
        ./main.exe
main.exe : main.cpp *.h
        $(CXX) $(CXXFLAGS) $(LDFLAGS) -o$@ main.cpp

sol : main_solution.exe
runs : main_solution.exe
        ./main_solution.exe
main_solution.exe : main_solution.cpp *.h
        $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ main_solution.cpp

clean :
        rm -f *.o *.exe
cmake_minimum_required(VERSION 3.3)
project(src)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lglut -lGLU -lGL -lGLEW -lm -lSDL2 -lSDL2main -Wall -g")

set(SOURCE_FILES
        """ALL SOURCE FILES"""")

add_executable(src ${SOURCE_FILES})
此项目(cmakefile和makefile)在我的虚拟机上运行良好…

我希望您能帮助我thx。

在CMake中,您可以使用
target\u link\u库
指定要使用的库。通常,您希望使用
find_package(…)
查找特定库的配置,然后使用它引入的变量进行链接

find_package(OpenGL)
add_executable(foo …)
target_link_libraries(foo ${OPENGL_gl_LIBRARY} …)

您应该查看
find_package
使用的cmake模块,查看它们配置的变量的名称。

这些不是ld标志,而是LIB。而且你的LIB应该只在链接阶段通过。但这是我的虚拟机上的工作,因此配置我不明白为什么:/仅仅因为我可以制造一辆方轮汽车并不意味着我应该。你不应该把你的LIB和你的ld标志放在一起;这就像把你的源代码和你的编译器标记放在一起一样。还有,你为什么要使用freeglut和SDL2?是我的学校老师给我的projet,但我们需要处理opengl图形的freeglut和SDL。