如何更改automake';什么是CXXLINK? 我试图用AutoCADE工具编译一个简单的C++程序。automake在其Makefile中自己创建一行:CXXLINK=$(CXXLD)$(AM\U CXXFLAGS)$(CXXFLAGS)$(AM\U LDFLAGS)$(LDFLAGS)\-o$@

如何更改automake';什么是CXXLINK? 我试图用AutoCADE工具编译一个简单的C++程序。automake在其Makefile中自己创建一行:CXXLINK=$(CXXLD)$(AM\U CXXFLAGS)$(CXXFLAGS)$(AM\U LDFLAGS)$(LDFLAGS)\-o$@,c++,gcc,linker,autoconf,automake,C++,Gcc,Linker,Autoconf,Automake,然而,通过这种方式,我得到了一些链接器错误,这可以通过简单地将-o example.cpp部分放在g++命令的开头而不是结尾来解决 如何指示automake将-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@ -l

然而,通过这种方式,我得到了一些链接器错误,这可以通过简单地将
-o example.cpp
部分放在g++命令的开头而不是结尾来解决

如何指示automake将
-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

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


尝试将
AM\u PROG\u LIBTOOL
添加到
configure.ac

您做错了。问题是您将库作为
LDFLAGS
传递,这是不正确的

你应该

GLTest_LDADD = $(gllibs_LIBS)
因此,您正确地告诉automake这些是库


根据使用的libtool版本,使用libtool可能会起作用,因为它可以对命令行进行排序,但是它仍然是错误的,在其他情况下会失败。

你的
Makefile.am
看起来像什么?这是我的Makefile.am:
bin_PROGRAMS=GLTest
GLTest_SOURCES=main.cpp
am_cxflags=@gllibs\u CFLAGS@-std=c++11-pthread
am_ldu=@gllibs\u LIBS@-lGLEW-11-lXi-lXrandr
如何设置
@gllibs_LIBS@
?您是否尝试了
$(gllibs_LIBS)
?您是否查看了
PKG\u CHECK\u MODULES
以查找GL/X11等库?据我所知,
gllibs\u LIBS
由自动配置设置。在我的
configure.ac
中,我有
PKG\u CHECK\u模块([gllibs],[gl glew glfw3>=3.0])
,这不是为我设置了这些变量吗<代码>$(gllibs_LIBS)对我来说没有任何改变。你能公布你得到的实际链接错误吗?