我正在尝试使用自动制作工具来编译一个简单的C++程序。自动制作本身会在其Makefile中创建以下行:CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@
但是,通过这种方式,我会遇到一些链接器错误,只需将-o example example.cpp部分放在g++命令的开头而不是结尾即可解决。

如何指示自动制作将-o example example.cpp放在链接器命令的前面?

这是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

这是链接器错误:
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

最佳答案

从输出中的链接器命令来看,您似乎没有使用libtool

尝试将AM_PROG_LIBTOOL添加到configure.ac

08-06 00:42