踩坑,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相同的錯誤,不解。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com