【问题标题】:Autotools build fails while linking链接时 Autotools 构建失败
【发布时间】:2019-09-08 21:15:44
【问题描述】:

我有一个项目正在努力转换为自动工具。

这里是相关文件

configure.ac

AC_INIT([opengl-es-demo], [1])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_LANG(C++)
AC_PROG_CXX
PKG_CHECK_MODULES(LIBPNG, libpng >= 1.6.34)
PKG_CHECK_MODULES(FREETYPE2, freetype2 >= 21.0.15)
PKG_CHECK_MODULES(EGL, egl > 0)
PKG_CHECK_MODULES(GLES2, glesv2 > 0)
PKG_CHECK_MODULES(PTHREAD, pthread-stubs > 0)
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

Makefile.am

bin_PROGRAMS = main
main_SOURCES = main.cpp eglManager.cpp shaderManager.cpp imageUtils.cpp freetypeUtils.cpp texture.cpp shader.cpp camera.cpp
main_CPPFLAGS = $(FREETYPE2_CFLAGS) $(LIBPNG_CFLAGS) $(EGL_CFLAGS) $(GLES2_CFLAGS) $(PTHREAD_CFLAGS)
main_LDFLAGS = $(FREETYPE2_LIBS) $(LIBPNG_LIBS) $(EGL_LIBS) $(GLES2_LIBS) $(PTHREAD_LIBS)

链接器调用此步骤...

g++  -g -O2 -lfreetype -lpng16 -lz -lEGL -lGLESv2   -o main main-main.o main-eglManager.o main-shaderManager.o main-imageUtils.o main-freetypeUtils.o main-texture.o main-shader.o main-camera.o

...然后失败,出现一堆未定义的对 OpenGL(-GLESv2)、png(-lpng16) 和 freetype(-lfreetype) 库中的函数的引用错误。

当我不使用 autotools(只有一个 makefile)时它编译得很好,所以我知道问题出在我的 autotools 使用上。

我在哪里搞砸了配置?

【问题讨论】:

    标签: gcc linker g++ gnu autotools


    【解决方案1】:

    main_LDFLAGS 更改为main_LDADD 解决了问题。

    Correcting the GCC command line ordering using Automake

    【讨论】:

      猜你喜欢
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多