踩坑,gcc 参数顺序导致编译出错?

环境:msys64-mingw32-windows10下编译一个的小项目https://github.com/mjsaka/ddtype

GCC版本:
Using built-in specs.
COLLECT_GCC=C:\msys64\mingw32\bin\gcc.exe
COLLECT_LTO_WRAPPER=C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.1.0/lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../gcc-7.1.0/configure --prefix=/mingw32 --with-local-prefix=/mingw32/local --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --with-native-system-header-dir=/mingw32/i686-w64-mingw32/include --libexecdir=/mingw32/lib --enable-bootstrap --with-arch=i686 --with-tune=generic --enable-languages=c,lto,c++,objc,obj-c++,fortran,ada --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw32 --with-mpfr=/mingw32 --with-mpc=/mingw32 --with-isl=/mingw32 --with-pkgversion='Rev2, Built by MSYS2 project' --with-bugurl=https://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld --disable-sjlj-exceptions --with-dwarf2
Thread model: posix
gcc version 7.1.0 (Rev2, Built by MSYS2 project)

以前这个项目是可以直接configure,make的,有一段时间没上手了,今天试了一下,编译出错了。

首先:直接用make编译,所有文件编译均通过,链接时出错,无数的undefined reference to ’ … ’ ,数小时的时间各种尝试均无果。

偶然:尝试了一下手工编译g++ -o ddtype *.o `pkg-config --libs gtkmm-3.0 libxml++-3.0`,编译通过。

随后:找问题的原因,对比make的编译参数和手动编译的参数,一个个去掉make多出来的参数,直到和手动编译参数一致,仍然编译失败。

然后:尝试了一下g++ `pkg-config --libs gtkmm-3.0 libxml++-3.0` -o ddtype *.o 编译失败,出现与make一样的错误,autotools生成的makefile里就是这样的顺序。

最后:尝试直接用ld以相同的参数进行链接,结果无论文件在参数前还是在参数后均会出现与make相同的错误,不解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值