Настроить путь включения cc1

Все еще сталкивается с какой-то странной ошибкой компиляции при использовании MSYS2 mingw64 для компиляции OpenLDAP

Я думаю, что это сводится к некоторой победе сокета, в настоящее время сталкиваются с 2 основными ошибками во время make зависят

во время зависимости

не могу найти nt_err.c в серверах /slapd/slapi ==> Я прибег к копированию nt_err.c из библиотеки /liblber/nt_err.c

Затем наступила роковая ошибка, в то время как make зависимость в slapi. Команда, используемая make, зависит: make -w -I/usr/include -I/usr/include -I/usr/include -I/usr/include dependэто может быть потому, что я передал -I/usr/include в основной make-зависимости

но до сих пор

Entering directory '/home/Jimmy/openldapsrc/openldap-2.4.46/servers/slapd/slapi'
../../../build/mkdep -l -d "." -c "cc" -m "-M" -I../../../include -I.. -I.        -I../../../include -I./.. -I.     plugin.c slapi_pblock.c slapi_utils.c printmsg.c slapi_ops.c slapi_dn.c slapi_ext.c slapi_overlay.c nt_err.c
In file included from slapi_utils.c:34:0:
../../../include/netdb.h:73:10: fatal error: netinet/in.h: No such file or directory
 #include <netinet/in.h>
          ^~~~~~~~~~~~~~
compilation terminated.

И на самом деле я видел много подобных ошибок, например, во время make это также даст ошибку в slapi, как

No such file or directory
#include <sys/socket.h>
          ^~~~~~~~~~~~~~
compilation terminated.

Я проверил с pacman -Fs in.h socket.h выход как следовать

msys/msys2-runtime-devel 2.10.0-2
    usr/include/cygwin/in.h
    usr/include/netinet/in.h
    usr/include/sys/socket.h

и у меня установлен msys2-runtime-devel. Тем не менее это напомнило мне, что во время./configure вывод содержал

checking sys/socket.h usability... no
checking sys/socket.h presence... no

так что I пытался бежать gcc -xc -E -v - пытаясь определить, какой каталог включен, однако в MSYS2-MINGW64 он остановился на этом

COLLECT_GCC=C:\msys64\mingw64\bin\gcc.exe
Target: x86_64-w64-mingw32
Configured with: ../gcc-7.3.0/configure --prefix=/mingw64 --with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include --libexecdir=/mingw64/lib --enable-bootstrap --with-arch=x86-64 --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 --enable-libstdcxx-filesystem-ts=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=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 --with-pkgversion='Rev1, Built by MSYS2 project' --with-bugurl=https://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld
Thread model: posix
gcc version 7.3.0 (Rev1, Built by MSYS2 project)
COLLECT_GCC_OPTIONS='-E' '-v' '-mtune=generic' '-march=x86-64'
 C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/cc1.exe -E -quiet -v -iprefix C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/ -D_REENTRANT - -mtune=generic -march=x86-64

cc1 не дал вывода, заморозил MSYS2, и мне пришлось прекратить cc1 из диспетчера задач.

Тогда я бегу прямо C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/cc1.exe -E -quiet -v -iprefix C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/ -D_REENTRANT - -mtune=generic -march=x86-64

он вернулся

ignoring duplicate directory "C:/msys64/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/7.3.0/include"
ignoring nonexistent directory "C:/building/msys64/mingw64/include"
ignoring nonexistent directory "/mingw64/include"
ignoring duplicate directory "C:/msys64/mingw64/lib/gcc/../../lib/gcc/x86_64- w64-mingw32/7.3.0/include-fixed"
ignoring duplicate directory "C:/msys64/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/7.3.0/../../../../x86_64-w64-mingw32/include"
ignoring nonexistent directory "C:/building/msys64/mingw64/x86_64-w64-mingw32/include"
#include "..." search starts here:
#include <...> search starts here:
 C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/include
 C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64- mingw32/7.3.0/../../../../include
 C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/include-fixed
 C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/../../../../x86_64-w64-mingw32/include
End of search list.

Оказывается #include <...> search не включает каталог / usr / include MSYS2, должен был C:/msys64/mingw64/bin/../../usr/include

Я пытался положить ENV CFLAGS="-I/usr/include" перед./configure, что вызвало больше ошибок, многие.h не пригодные для использования, но наличие. и sys / socket.h можно использовать и присутствие.

Так получается -I/usr/include как-то не перешло в компилятор?

Мой вопрос, это настраивается? Или что-то не так с моей настройкой?

OpenLDAP 2.4.46

MSYS2 20161025

1 ответ

MSYS2 имеет три разных набора инструментов для разных целей:

  1. Набор инструментов на основе msys-2.0.dll, который создает исполняемые файлы, использующие возможности эмуляции POSIX, предоставляемые msys-2.0.dll. Основной компилятор /usr/bin/gcc и он использует заголовки из /usr/include, Это инструментальная цепочка, которую следует использовать, если ваша программа была написана для операционной системы Linux или другой операционной системы типа POSIX, и вам трудно портировать ее на Windows, поскольку она использует множество функций, не поддерживаемых Microsoft.
  2. MinGW 32-битный набор инструментов. Это компилирует собственное программное обеспечение Windows, которое может работать в 32-битных или 64-битных версиях Windows. Основной компилятор /mingw32/bin/gcc, Чтобы использовать этот набор инструментов, необходимо запустить MSYS2 с ярлыком "MinGW-w64 32-bit Shell" или запустить mingw32.exe. Этот набор инструментов не совместим с заголовками в /usr/include, но он может использовать собственные заголовки Windows с интерфейсами, определенными Microsoft, как windows.h,
  3. MinGW 64-битный набор инструментов. Этот набор инструментов похож на 32-разрядный набор инструментов, за исключением того, что исполняемые файлы являются 64-разрядными исполняемыми файлами и, следовательно, работают только в 64-разрядных версиях Windows. Он имеет свой собственный ярлык в меню "Пуск", а также может быть запущен с mingw64.exe,

Я ничего не знаю об OpenLDAP, но если для этого требуется набор заголовков, которых нет в наборе инструментов MinGW, вы можете либо попытаться перенести его на Windows, либо переключиться на сборку с помощью msys-2.0.dll- на основе инструментария.

Другие вопросы по тегам