118 / 5 / 4
Регистрация: 05.05.2013
Сообщений: 336
|
|
1 | |
Mingw компиляция по частям01.03.2019, 16:17. Показов 1755. Ответов 2
Метки компиляция (Все метки)
Добрый день.
При задумке одного из проектов есть необходимость компиляции отдельных компонентов и последующей сборки компонентов в результирующий выполняемый файл, но возникает одна проблема: "undefined reference to" при сборке результирующего файла. Собирается все через Makefile с использованием MinGW, и если сами компоненты собираются без каких либо ошибок: Код
g++ -g3 -O2 -Wall -fno-exceptions -fno-rtti -c -o src/core/coreEngine.o src/core/coreEngine.cpp g++ -g3 -O2 -Wall -fno-exceptions -fno-rtti -c -o src/core/event.o src/core/event.cpp g++ -g3 -O2 -Wall -fno-exceptions -fno-rtti -c -o src/main.o src/main.cpp Код
g++ -g3 -O2 -Wall -Isrc/core -Isrc/physics -Isrc/render -Iinc -Iinc/GL -Llib -w -Wl,-subsystem,windows -lOpenGL32 -lglu32 -lfr eeglut -o build/test.exe src/core/coreEngine.o src/core/event.o src/main.o src/core/coreEngine.o: In function `ZN4Core10CoreEngine6renderEv': d:\MyTest\[OpenGL] EngineTest/src/core/coreEngine.cpp:30: undefined reference to `_imp__glClear@4' d:\MyTest\[OpenGL] EngineTest/src/core/coreEngine.cpp:32: undefined reference to `_imp__glLoadIdentity@0' d:\MyTest\[OpenGL] EngineTest/src/core/coreEngine.cpp:34: undefined reference to `gluLookAt@72' d:\MyTest\[OpenGL] EngineTest/src/core/coreEngine.cpp:38: undefined reference to `_imp__glRotatef@16' d:\MyTest\[OpenGL] EngineTest/src/core/coreEngine.cpp:41: undefined reference to `_imp__glColor3f@12' d:\MyTest\[OpenGL] EngineTest/src/core/coreEngine.cpp:42: undefined reference to `_imp__glBegin@4' d:\MyTest\[OpenGL] EngineTest/src/core/coreEngine.cpp:43: undefined reference to `_imp__glVertex3f@12' d:\MyTest\[OpenGL] EngineTest/src/core/coreEngine.cpp:46: undefined reference to `_imp__glEnd@0' d:\MyTest\[OpenGL] EngineTest/src/core/coreEngine.cpp:49: undefined reference to `_imp__glutSwapBuffers@0' src/main.o: In function `glutInit_ATEXIT_HACK': d:\MyTest\[OpenGL] EngineTest/src/../inc/GL/freeglut_std.h:637: undefined reference to `_imp____glutInitWithExit@12' src/main.o: In function `main': d:\MyTest\[OpenGL] EngineTest/src/main.cpp:20: undefined reference to `_imp__glutInitDisplayMode@4' d:\MyTest\[OpenGL] EngineTest/src/main.cpp:21: undefined reference to `_imp__glutInitWindowPosition@8' d:\MyTest\[OpenGL] EngineTest/src/main.cpp:22: undefined reference to `_imp__glutInitWindowSize@8' src/main.o: In function `glutCreateWindow_ATEXIT_HACK': d:\MyTest\[OpenGL] EngineTest/src/../inc/GL/freeglut_std.h:639: undefined reference to `_imp____glutCreateWindowWithExit@8' src/main.o: In function `main': d:\MyTest\[OpenGL] EngineTest/src/main.cpp:28: undefined reference to `_imp__glutDisplayFunc@4' d:\MyTest\[OpenGL] EngineTest/src/main.cpp:30: undefined reference to `_imp__glutMainLoop@0' collect2.exe: error: ld returned 1 exit status make: *** [build/test.exe] Error 1 Не могу понять в чем проблема?
0
|
|
01.03.2019, 16:17 | |
Ответы с готовыми решениями:
2
Компиляция в g++ из MinGW
Компиляция в MSYS (MinGW) Компиляция серьезной графики под Mingw |
1486 / 415 / 89
Регистрация: 17.05.2015
Сообщений: 1,343
|
|
01.03.2019, 17:23 | 2 |
1
|
118 / 5 / 4
Регистрация: 05.05.2013
Сообщений: 336
|
|
01.03.2019, 18:27 [ТС] | 3 |
Да, по логике зависимостей так действительно будет правильней писать, но проблема оказалось не в этом, а в том, что существует строгая последовательность линковки:
Код
g++ -Isrc/core -Isrc/physics -Isrc/render -Iinc -Iinc/GL -Llib -w -Wl,-subsystem,windows src/core/coreEngine.o src/core/event.o src/main.o -lOpenGL32 -lglu32 -lfreeglut -o build/test.exe Код
$(TARGET): $(OBJECTS) $(CXX) $(INCDIRS) $(LIBIRS) $(COMPILER_FLAGS) $^ $(LIBRARIES) -o $@ Код
$(TARGET): $(OBJECTS) $(CXX) $(INCDIRS) $(LIBDIRS) $(COMPILER_FLAGS) $(LIBRARIES) -o $@ $^ Спасибо за помощь.
0
|
01.03.2019, 18:27 | |
Помогаю со студенческими работами здесь
3
Mingw-w64 MinGW TDM-GCC Кросс-компиляция opengl в mingw-w64 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |