From: Commander S. <com...@go...> - 2011-11-07 09:53:32
|
Hi there, so I'm currently using a mingw + msys installation for a while and I'm really enjoying it so far. But there is one thing that I just can't get working: I like to keep my compiled/installed libraries inside the msys directory/root (default PREFIX=/usr/local/) instead of putting them in PREFIX=/mingw. The wiki suggests using /mingw because mingw-gcc does not include msys folders as default search paths (which is fine), but my intention behind using (the default) PREFIX=/usr/local/ when running ./configure is, to make configure-scripts find already installed 3rd party libs easier. Also, this way "base-mingw" include/libs are more "cleanly" seperated from msys/3rd party include/libs. Up until now I was mainly using CPATH, C_INCLUDE_PATH, CPLUS_INCLUDE_PATH and LD_LIBRARY_PATH (Just to be sure, also CFLAGS, LDFLAGS) as msys env-variables to make msys include/libs available to mingw-gcc, but I do think, while beeing a working solution, its definitly far from beeing the cleanest one, especially I did read that using LD_LIBRARY_PATH is a bad/'not so good' idea. Now I think, that using a specs file should be a cleaner solution (only drawback might be, that I'll also be using msys includes, when not running mingw-gcc from within msys). Thus I followed the wiki instructions: * gcc -dumpspecs > C:/MinGW/msys/1.0/lib/gcc/mingw32/4.6.1/specs (non where overwriten) * Added to specs file: |- - - - - | *local_prefix: | C:/MinGW/msys/1.0/local/ | | *local_includes: | -I%(local_prefix)include | | *local_lib_search: | -L%(local_prefix)lib |- - - - - * Replaced lines with: |- - - - - | *cpp: | %{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT} %(local_includes) | | *link_libgcc: | %D %(local_lib_search) | | *cc1plus: | %(local_includes) |- - - - - But somehow gcc/g++ seems to use the spec file, but still does not use the new include/lib paths. Here is how I tested this, what I did was create a "TestInclude.h" (empty) inside /local/include (msys) folder and another file Main.cpp somehwere else: |- - - - - | // Using <> to make gcc/g++ use its search paths | #include <TestInclude.h> | | int main(int argc, char *argv[]) { | return 0; | } |- - - - - I then tried to compile with "g++ Main.cpp -o Main", which gave me "...fatal error: testInclude.h: No such file or directory", while compiling via "g++ Main.cpp -o Main -I'/include'" works perfectly fine. (so, C:/MinGW/msys/1.0/local/include was not added to the search paths) Any idea, why adding include/libs via specs file does not seem to be working for me? ATTACHMENTS: Here is the output of "g++ Main.cpp -o Main --verbose": - - - - - Reading specs from c:/mingw/bin/../lib/gcc/mingw32/4.6.1/specs COLLECT_GCC=C:\MinGW\bin\g++.exe COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/4.6.1/lto-wrapper.exe Target: mingw32 Configured with: ../gcc-4.6.1/configure --enable-languages=c,c++,fortran,objc,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-runtime-libs --build=mingw32 --prefix=/mingw Thread model: win32 gcc version 4.6.1 (GCC) COLLECT_GCC_OPTIONS='-o' 'Main.exe' '-v' '-shared-libgcc' '-mtune=i386' '-march=i386' c:/mingw/bin/../libexec/gcc/mingw32/4.6.1/cc1plus.exe -quiet -v -iprefix c:\mingw\bin\../lib/gcc/mingw32/4.6.1/ Main.cpp -quiet -dumpbase Main.cpp -mtune=i386 -march=i386 -auxbase Main -version -o C:\Users\COMMAN~1\AppData\Local\Temp\cchNj44P.s GNU C++ (GCC) version 4.6.1 (mingw32) compiled by GNU C version 4.6.1, GMP version 5.0.1, MPFR version 2.4.1, MPC version 0.8.1 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring nonexistent directory "c:\mingw\bin\../lib/gcc/mingw32/4.6.1/../../../../mingw32/include" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/4.6.1/include/c++" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/4.6.1/include/c++/mingw32" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/4.6.1/include/c++/backward" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/4.6.1/include" ignoring duplicate directory "/mingw/lib/gcc/mingw32/4.6.1/../../../../include" ignoring duplicate directory "c:/mingw/lib/gcc/../../include" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/4.6.1/include-fixed" ignoring nonexistent directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/4.6.1/../../../../mingw32/include" ignoring duplicate directory "/mingw/include" #include "..." search starts here: #include <...> search starts here: c:\mingw\bin\../lib/gcc/mingw32/4.6.1/include/c++ c:\mingw\bin\../lib/gcc/mingw32/4.6.1/include/c++/mingw32 c:\mingw\bin\../lib/gcc/mingw32/4.6.1/include/c++/backward c:\mingw\bin\../lib/gcc/mingw32/4.6.1/include c:\mingw\bin\../lib/gcc/mingw32/4.6.1/../../../../include c:\mingw\bin\../lib/gcc/mingw32/4.6.1/include-fixed End of search list. GNU C++ (GCC) version 4.6.1 (mingw32) compiled by GNU C version 4.6.1, GMP version 5.0.1, MPFR version 2.4.1, MPC version 0.8.1 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 8e56a7b4b7f3db333ff95dd4b2d788a4 Main.cpp:1:25: fatal error: testInclude.h: No such file or directory compilation terminated. - - - - - (no 'C:\MinGW\msys\1.0\local\include' in <...> search) Here is the output of "g++ Main.cpp -o Main -I'/include' --verbose": - - - - - Reading specs from c:/mingw/bin/../lib/gcc/mingw32/4.6.1/specs COLLECT_GCC=C:\MinGW\bin\g++.exe COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/4.6.1/lto-wrapper.exe Target: mingw32 Configured with: ../gcc-4.6.1/configure --enable-languages=c,c++,fortran,objc,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-runtime-libs --build=mingw32 --prefix=/mingwThread model: win32 gcc version 4.6.1 (GCC) COLLECT_GCC_OPTIONS='-o' 'Main.exe' '-I' 'C:/MinGW/msys/1.0/include' '-v' '-shared-libgcc' '-mtune=i386' '-march=i386' c:/mingw/bin/../libexec/gcc/mingw32/4.6.1/cc1plus.exe -quiet -v -I C:/MinGW/msys/1.0/include -iprefix c:\mingw\bin\../lib/gcc/mingw32/4.6.1/ Main.cpp -quiet -dumpbase Main.cpp -mtune=i386 -march=i386 -auxbase Main -version -o C:\Users\COMMAN~1\AppData\Local\Temp\cczVhfsu.s GNU C++ (GCC) version 4.6.1 (mingw32) compiled by GNU C version 4.6.1, GMP version 5.0.1, MPFR version 2.4.1, MPC version 0.8.1 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring nonexistent directory "c:\mingw\bin\../lib/gcc/mingw32/4.6.1/../../../../mingw32/include" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/4.6.1/include/c++" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/4.6.1/include/c++/mingw32" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/4.6.1/include/c++/backward" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/4.6.1/include" ignoring duplicate directory "/mingw/lib/gcc/mingw32/4.6.1/../../../../include" ignoring duplicate directory "c:/mingw/lib/gcc/../../include" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/4.6.1/include-fixed" ignoring nonexistent directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/4.6.1/../../../../mingw32/include" ignoring duplicate directory "/mingw/include" #include "..." search starts here: #include <...> search starts here: C:/MinGW/msys/1.0/local/include c:\mingw\bin\../lib/gcc/mingw32/4.6.1/include/c++ c:\mingw\bin\../lib/gcc/mingw32/4.6.1/include/c++/mingw32 c:\mingw\bin\../lib/gcc/mingw32/4.6.1/include/c++/backward c:\mingw\bin\../lib/gcc/mingw32/4.6.1/include c:\mingw\bin\../lib/gcc/mingw32/4.6.1/../../../../include c:\mingw\bin\../lib/gcc/mingw32/4.6.1/include-fixed End of search list. GNU C++ (GCC) version 4.6.1 (mingw32) compiled by GNU C version 4.6.1, GMP version 5.0.1, MPFR version 2.4.1, MPC version 0.8.1 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 8e56a7b4b7f3db333ff95dd4b2d788a4 ... - - - - - ('C:\MinGW\msys\1.0\local\include' in <...> search) |