Я пытаюсь скомпилировать простую программу на C++ с помощью инструментов automake. Сам по себе, Automake создает в Makefile линии: CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o [email protected]
Как изменить порядок в CXXLINK automake?
Таким образом, однако, я получаю некоторые ошибки линкера, которые могут быть решены просто положить -o example example.cpp
части в начале команды г ++ вместо конца.
Как я могу указать automake поставить -o example example.cpp
перед командами компоновщика?
Вот Makefile.am
bin_PROGRAMS = GLTest
GLTest_SOURCES = main.cpp
[email protected][email protected] -std=c++11 -pthread
[email protected][email protected] -lGL -lGLEW -lglfw -lX11 -lXi -lXrandr
Вот ошибки компоновщика:
g++ -I/usr/include/libdrm -std=c++11 -pthread -g -O2 -lGLEW -lGLU -lGL -lglfw -lGL -lGLEW -lglfw -lX11 -lXi -lXrandr -o GLTest main.o
main.o: In function `main':
main.cpp:8: undefined reference to `glfwInit'
main.cpp:9: undefined reference to `glfwWindowHint'
main.cpp:10: undefined reference to `glfwWindowHint'
main.cpp:11: undefined reference to `glfwWindowHint'
main.cpp:12: undefined reference to `glfwWindowHint'
main.cpp:14: undefined reference to `glfwCreateWindow'
collect2: error: ld returned 1 exit status
Они решены, когда я скомпилировать его вручную, как это:
g++ -o GLTest main.cpp -I/usr/include/libdrm -std=c++11 -pthread -g -O2 -lGLEW -lGLU -lGL -lglfw -lGL -lGLEW -lglfw -lX11 -lXi -lXrandr
Как выглядит ваш 'Makefile.am'? – Galik
Это мой Makefile.am: 'bin_PROGRAMS = GLTest' ' GLTest_SOURCES = main.cpp' 'AM_CXXFLAGS = @ gllibs_CFLAGS @ -std = C++ 11 -pthread' ' AM_LDFLAGS = @ gllibs_LIBS @ -lGL -lGLEW -lglfw -lX11 -lXi -lXrandr' – Kadabash
Как установить '@ gllibs_LIBS @'? Вместо этого вы пытались использовать '$ (gllibs_LIBS)'? Вы посмотрели на 'PKG_CHECK_MODULES', чтобы найти библиотеки GL/X11 и т. Д.? – Galik