【问题标题】:Autotools not linking GLFW properlyAutotools 未正确链接 GLFW
【发布时间】:2016-08-30 18:42:00
【问题描述】:

我正在尝试使用自动工具设置项目。我需要将可执行文件链接到 GLFW,但我无法让它工作。

配置.ac:

AC_INIT([Test], [0.1], [test@example.com])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CXX
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
                 Makefile
                 src/Makefile
                 ])
AC_OUTPUT
PKG_CHECK_MODULES([glfw3],[glfw3])

Makefile.am:

SUBDIRS = src

src/Makefile.am:

bin_PROGRAMS = testapp
testapp_SOURCES = main.cpp
testapp_CFLAGS = ${glfw3_CFLAGS}
testapp_LDADD = ${glfw3_LIBS}

当我运行 ./configure 时,一切正常。 glfw3 被发现为 expexted。但是,当我尝试使用 make 编译代码时,可执行文件似乎没有正确链接。

make  all-recursive
make[1]: Entering directory '/home/dennis/Utveckling/testapp'
Making all in src
make[2]: Entering directory '/home/dennis/Utveckling/testapp/src'
g++ -DHAVE_CONFIG_H -I. -I..     -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.cpp
mv -f .deps/main.Tpo .deps/main.Po
g++  -g -O2   -o testapp main.o  
main.o: In function `main':
/home/dennis/Utveckling/testapp/src/main.cpp:6: undefined reference to `glfwInit'
/home/dennis/Utveckling/testapp/src/main.cpp:7: undefined reference to `glfwCreateWindow'
/home/dennis/Utveckling/testapp/src/main.cpp:8: undefined reference to `glfwMakeContextCurrent'
/home/dennis/Utveckling/testapp/src/main.cpp:12: undefined reference to `glClear'
/home/dennis/Utveckling/testapp/src/main.cpp:13: undefined reference to `glfwSwapBuffers'
/home/dennis/Utveckling/testapp/src/main.cpp:14: undefined reference to `glfwPollEvents'
/home/dennis/Utveckling/testapp/src/main.cpp:10: undefined reference to `glfwWindowShouldClose'
collect2: error: ld returned 1 exit status
Makefile:333: recipe for target 'testapp' failed
make[2]: *** [testapp] Error 1
make[2]: Leaving directory '/home/dennis/Utveckling/testapp/src'
Makefile:353: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/dennis/Utveckling/testapp'
Makefile:294: recipe for target 'all' failed
make: *** [all] Error 2

我做错了什么?代码是从http://www.glfw.org/documentation.html复制粘贴的

【问题讨论】:

    标签: makefile linker autotools glfw automake


    【解决方案1】:

    您应该在AC_OUTPUT 之前移动PKG_CHECK_MODULEconfigure.ac 是自上而下执行的,因此您在计算之前将值代入 Makefile.in

    还有一个过时的注释,在Makefile.am 中你应该使用$() 形式而不是${}

    【讨论】:

      猜你喜欢
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 2013-08-15
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多