2015-01-01 2 views
0

msys2에서 x86_64-w64-mingw32를 사용하여 (Windows 7 64 비트) API를 빌드하려고 시도했지만 오류가 계속 발생합니다.
32 비트 nmake를 사용하면이 오류가 발생하지 않습니다. 하지만 난 64 비트에서 msys2 및 x86_64 - w64 - mingw32를 사용하여 그것을 구축해야합니다
제발 실수를 해결하는 데 도움이됩니다.GeoIP C API 빌드 및 패치 오류

이 로그는 빌드에서입니다 :

$ ./configure --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 
checking for x86_64-w64-mingw32-gcc... x86_64-w64-mingw32-gcc 
checking whether the C compiler works... yes 
checking for C compiler default output file name... a.exe 
checking for suffix of executables... .exe 
checking whether we are cross compiling... no 
checking for suffix of object files... o 
checking whether we are using the GNU C compiler... yes 
checking whether x86_64-w64-mingw32-gcc accepts -g... yes 
checking for x86_64-w64-mingw32-gcc option to accept ISO C89... none needed 
checking whether x86_64-w64-mingw32-gcc understands -c and -o together... yes 
checking how to run the C preprocessor... x86_64-w64-mingw32-gcc -E 
checking for grep that handles long lines and -e... /usr/bin/grep 
checking for egrep... /usr/bin/grep -E 
checking for ANSI C header files... yes 
checking for sys/types.h... yes 
checking for sys/stat.h... yes 
checking for stdlib.h... yes 
checking for string.h... yes 
checking for memory.h... yes 
checking for strings.h... yes 
checking for inttypes.h... yes 
checking for stdint.h... yes 
checking for unistd.h... yes 
checking minix/config.h usability... no 
checking minix/config.h presence... no 
checking for minix/config.h... no 
checking whether it is safe to define __EXTENSIONS__... yes 
checking for a BSD-compatible install... /usr/bin/install -c 
checking whether build environment is sane... yes 
/bin/sh: /home/Me/missing: No such file or directory 
configure: WARNING: 'missing' script is too old or missing 
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p 
checking for gawk... gawk 
checking whether make sets $(MAKE)... yes 
checking for style of include used by make... GNU 
checking whether make supports nested variables... yes 
checking dependency style of x86_64-w64-mingw32-gcc... gcc3 
checking for x86_64-w64-mingw32-gcc... (cached) x86_64-w64-mingw32-gcc 
checking whether we are using the GNU C compiler... (cached) yes 
checking whether x86_64-w64-mingw32-gcc accepts -g... (cached) yes 
checking for x86_64-w64-mingw32-gcc option to accept ISO C89... (cached) none needed 
checking whether x86_64-w64-mingw32-gcc understands -c and -o together... (cached) yes 
checking build system type... x86_64-w64-mingw32 
checking host system type... x86_64-w64-mingw32 
checking how to print strings... printf 
checking for a sed that does not truncate output... /usr/bin/sed 
checking for fgrep... /usr/bin/grep -F 
checking for ld used by x86_64-w64-mingw32-gcc... c:/msys64/opt/windows_64/x86_64-w64-mingw32/bin/ld.exe 
checking if the linker (c:/msys64/opt/windows_64/x86_64-w64-mingw32/bin/ld.exe) is GNU ld... yes 
checking for BSD- or MS-compatible name lister (nm)... /opt/windows_64/bin/nm -B 
checking the name lister (/opt/windows_64/bin/nm -B) interface... BSD nm 
checking whether ln -s works... no, using cp -pR 
checking the maximum length of command line arguments... 8192 
checking how to convert x86_64-w64-mingw32 file names to x86_64-w64-mingw32 format... func_convert_file_msys_to_w32 
checking how to convert x86_64-w64-mingw32 file names to toolchain format... func_convert_file_msys_to_w32 
checking for c:/msys64/opt/windows_64/x86_64-w64-mingw32/bin/ld.exe option to reload object files... -r 
checking for x86_64-w64-mingw32-objdump... no 
checking for objdump... objdump 
checking how to recognize dependent libraries... file_magic ^x86 archive import|^x86 DLL 
checking for x86_64-w64-mingw32-dlltool... no 
checking for dlltool... dlltool 
checking how to associate runtime and link libraries... func_cygming_dll_for_implib 
checking for x86_64-w64-mingw32-ar... no 
checking for ar... ar 
checking for archiver @FILE support... @ 
checking for x86_64-w64-mingw32-strip... no 
checking for strip... strip 
checking for x86_64-w64-mingw32-ranlib... no 
checking for ranlib... ranlib 
checking command to parse /opt/windows_64/bin/nm -B output from x86_64-w64-mingw32-gcc object... ok 
checking for sysroot... no 
checking for a working dd... /usr/bin/dd 
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1 
checking for x86_64-w64-mingw32-mt... no 
checking for mt... no 
checking if : is a manifest tool... no 
checking for dlfcn.h... no 
checking for objdir... .libs 
checking if x86_64-w64-mingw32-gcc supports -fno-rtti -fno-exceptions... no 
checking for x86_64-w64-mingw32-gcc option to produce PIC... -DDLL_EXPORT -DPIC 
checking if x86_64-w64-mingw32-gcc PIC flag -DDLL_EXPORT -DPIC works... yes 
checking if x86_64-w64-mingw32-gcc static flag -static works... yes 
checking if x86_64-w64-mingw32-gcc supports -c -o file.o... yes 
checking if x86_64-w64-mingw32-gcc supports -c -o file.o... (cached) yes 
checking whether the x86_64-w64-mingw32-gcc linker (c:/msys64/opt/windows_64/x86_64-w64-mingw32/bin/ld.exe) supports shared libraries... yes 
checking whether -lc should be explicitly linked in... yes 
checking dynamic linker characteristics... Win32 ld.exe 
checking how to hardcode library paths into programs... immediate 
checking whether stripping libraries is possible... yes 
checking if libtool supports shared libraries... yes 
checking whether to build shared libraries... yes 
checking whether to build static libraries... yes 
checking for byte... no 
checking for ushort... no 
checking for ulong... no 
checking for u16... no 
checking for u32... no 
checking for off_t... yes 
checking for size_t... yes 
checking for ssize_t... yes 
checking for uint32_t... yes 
checking for uint64_t... yes 
checking whether byte ordering is bigendian... no 
checking for getopt... yes 
checking for gettimeofday... yes 
checking for pread... no 
checking for vasprintf... yes 
checking for vsnprintf... yes 
checking for vsprintf... yes 
checking for gethostbyname... no 
checking for gethostbyname in -lnsl... no 
checking for gethostbyname_r... no 
checking for memset... yes 
checking for memchr... yes 
checking for munmap... no 
checking for strrchr... yes 
checking for socket... no 
checking for strchr... yes 
checking for strdup... yes 
checking for strstr... yes 
checking for stdlib.h... (cached) yes 
checking for GNU libc compatible malloc... yes 
checking for stdlib.h... (cached) yes 
checking for GNU libc compatible realloc... yes 
checking for stdlib.h... (cached) yes 
checking for unistd.h... (cached) yes 
checking for sys/param.h... yes 
checking for getpagesize... yes 
checking for working mmap... no 
checking that generated files are newer than configure... done 
configure: creating ./config.status 
config.status: creating Makefile 
config.status: creating GeoIP.spec 
config.status: creating geoip.pc 
config.status: creating libGeoIP/Makefile 
config.status: creating apps/Makefile 
config.status: creating man/Makefile 
config.status: creating test/Makefile 
config.status: executing depfiles commands 
config.status: executing libtool commands 



$ make -i 
Making all in libGeoIP 
make[1]: Entering directory '/home/Me/src/geoip-api-c-1.6.3/libGeoIP' 
/bin/sh ../libtool --tag=CC --mode=link x86_64-w64-mingw32-gcc -g -O2 -no-undefined -version-info 7:3:6 -o libGeoIP.la -rpath /usr/local/lib GeoIP.lo GeoIP_deprecated.lo GeoIPCity.lo regionName.lo timeZone.lo 
libtool: link: rm -fr .libs/libGeoIP.dll.a 
libtool: link: x86_64-w64-mingw32-gcc -shared .libs/GeoIP.o .libs/GeoIP_deprecated.o .libs/GeoIPCity.o .libs/regionName.o .libs/timeZone.o -g -O2 -o .libs/libGeoIP-1.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libGeoIP.dll.a 
.libs/GeoIP.o: In function `_check_mtime': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:1134: undefined reference to `pread' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:1172: undefined reference to `pread' 
.libs/GeoIP.o: In function `_GeoIP_inet_ntop': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:590: undefined reference to `__imp_getnameinfo' 
.libs/GeoIP.o: In function `_GeoIP_seek_record_v6_gl': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:1209: undefined reference to `pread' 
.libs/GeoIP.o: In function `get_db_description': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:564: undefined reference to `__imp_GeoIPDBDescription' 
.libs/GeoIP.o: In function `_get_name_v6_gl': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:2357: undefined reference to `pread' 
.libs/GeoIP.o: In function `_GeoIP_inet_pton': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:606: undefined reference to `__imp_getaddrinfo' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:617: undefined reference to `__imp_freeaddrinfo' 
.libs/GeoIP.o: In function `_GeoIP_seek_record_gl': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:1299: undefined reference to `pread' 
.libs/GeoIP.o: In function `get_db_description': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:564: undefined reference to `__imp_GeoIPDBDescription' 
.libs/GeoIP.o: In function `_get_name_gl': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:2298: undefined reference to `pread' 
.libs/GeoIP.o: In function `GeoIP_open': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:1494: undefined reference to `pread' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:1547: undefined reference to `pread' 
.libs/GeoIP.o: In function `_GeoIP_lookupaddress': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:1644: undefined reference to `__imp_inet_addr' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:1692: undefined reference to `__imp_ntohl' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:1677: undefined reference to `__imp_gethostbyname' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:1692: undefined reference to `__imp_ntohl' 
.libs/GeoIP.o: In function `_GeoIP_lookupaddress_v6': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:1707: undefined reference to `__imp_getaddrinfo' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:1714: undefined reference to `__imp_freeaddrinfo' 
.libs/GeoIP.o: In function `get_db_description': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:564: undefined reference to `__imp_GeoIPDBDescription' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:564: undefined reference to `__imp_GeoIPDBDescription' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:564: undefined reference to `__imp_GeoIPDBDescription' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:564: undefined reference to `__imp_GeoIPDBDescription' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:564: undefined reference to `__imp_GeoIPDBDescription' 
.libs/GeoIP.o:C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:564: more undefined references to `__imp_GeoIPDBDescription' follow 
.libs/GeoIP.o: In function `GeoIP_assign_region_by_inetaddr_gl': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:2030: undefined reference to `__imp_ntohl' 
.libs/GeoIP.o: In function `_get_region_gl': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:2132: undefined reference to `__imp_htonl' 
.libs/GeoIP.o: In function `get_db_description': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:564: undefined reference to `__imp_GeoIPDBDescription' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:564: undefined reference to `__imp_GeoIPDBDescription' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:564: undefined reference to `__imp_GeoIPDBDescription' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:564: undefined reference to `__imp_GeoIPDBDescription' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:564: undefined reference to `__imp_GeoIPDBDescription' 
.libs/GeoIP.o:C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIP.c:564: more undefined references to `__imp_GeoIPDBDescription' follow 
.libs/GeoIPCity.o: In function `_extract_record': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIPCity.c:97: undefined reference to `__imp_GeoIP_country_continent' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIPCity.c:98: undefined reference to `__imp_GeoIP_country_code' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIPCity.c:99: undefined reference to `__imp_GeoIP_country_code3' 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIPCity.c:83: undefined reference to `pread' 
.libs/GeoIPCity.o: In function `_get_record_gl': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIPCity.c:187: undefined reference to `__imp_GeoIPDBDescription' 
.libs/GeoIPCity.o: In function `_get_record_v6_gl': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIPCity.c:217: undefined reference to `__imp_GeoIPDBDescription' 
.libs/GeoIPCity.o: In function `GeoIP_record_id_by_addr': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIPCity.c:302: undefined reference to `__imp_GeoIPDBDescription' 
.libs/GeoIPCity.o: In function `GeoIP_record_id_by_addr_v6': 
C:\msys64\home\Me\src\geoip-api-c-1.6.3\libGeoIP/GeoIPCity.c:320: undefined reference to `__imp_GeoIPDBDescription' 
collect2.exe: error: ld returned 1 exit status 
Makefile:387: recipe for target 'libGeoIP.la' failed 
make[1]: [libGeoIP.la] Error 1 (ignored) 
make[1]: Leaving directory '/home/Me/src/geoip-api-c-1.6.3/libGeoIP' 
Making all in apps 
make[1]: Entering directory '/home/Me/src/geoip-api-c-1.6.3/apps' 
x86_64-w64-mingw32-gcc -DPACKAGE_NAME=\"GeoIP\" -DPACKAGE_TARNAME=\"GeoIP\" -DPACKAGE_VERSION=\"1.6.3\" -DPACKAGE_STRING=\"GeoIP\ 1.6.3\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -D__EXTENSIONS__=1 -D_ALL_SOURCE=1 -D_GNU_SOURCE=1 -D_POSIX_PTHREAD_SEMANTICS=1 -D_TANDEM_SOURCE=1 -DPACKAGE=\"GeoIP\" -DVERSION=\"1.6.3\" -DLT_OBJDIR=\".libs/\" -DLITTLE_ENDIAN_HOST=1 -DHAVE_GETOPT=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_VASPRINTF=1 -DHAVE_VSNPRINTF=1 -DHAVE_VSPRINTF=1 -DHAVE_MEMSET=1 -DHAVE_MEMCHR=1 -DHAVE_STRRCHR=1 -DHAVE_STRCHR=1 -DHAVE_STRDUP=1 -DHAVE_STRSTR=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_STDLIB_H=1 -DHAVE_REALLOC=1 -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_GETPAGESIZE=1 -I. -I../libGeoIP -DSYSCONFDIR=\"/usr/local/etc\" -Wall -g -O2 -MT geoiplookup.o -MD -MP -MF .deps/geoiplookup.Tpo -c -o geoiplookup.o geoiplookup.c 
mv -f .deps/geoiplookup.Tpo .deps/geoiplookup.Po 
make[1]: *** No rule to make target '../libGeoIP/libGeoIP.la', needed by 'geoiplookup.exe'. Stop. 
make[1]: Leaving directory '/home/Me/src/geoip-api-c-1.6.3/apps' 
Makefile:429: recipe for target 'all-recursive' failed 
make: [all-recursive] Error 1 (ignored) 

그리고이 로그는 패치에서입니다 : irc://irc.oftc.net/#mingw-w64(adrien, alexey, LRN) 내가 문제를 해결하기 위해 관리 몇 PPL의 도움으로

$ patch -F0 -i ~/src/geoip-api-c-1.6.3/GeoIPWinDLL.patch -p0 
patching file GeoIP.c 
Hunk #1 FAILED at 23. 
Hunk #2 FAILED at 57. 
Hunk #3 FAILED at 67. 
Hunk #4 FAILED at 96. 
4 out of 4 hunks FAILED -- saving rejects to file GeoIP.c.rej 
patching file GeoIP.h 
patch: **** malformed patch at line 183: 

답변

0


그리고 또한 나는 패치가 필요하지 않다는 것을 알아 냈습니다
그래서 여기에 당신이 할 일을 말하면서 msys2에서 그것을 구축 할 수 있습니다. x86_64-w64-mingw32


  1. 편집 geoip-api-c-1.6.3/Makefile.am 및 ACLOCAL_AMFLAGS = -I M4
  2. 편집 geoip-api-c-1.6.3/configure.ac를 추가하고 추가 AC_CONFIG_MACRO_DIRS ([M4])
  3. 편집 geoip-api-c-1.6.3/libGeoIP/Makefile.am 당신이 pread.c을 추가하면 libGeoIP_la_SOURCES
  4. pread.c를 추가 당신이 그것을 제거합니다 EXTRA_DIST
  5. 실행 autoreconf -fiv 또는 ./bootstrap
  6. export "CFLAGS=-O2" export "CPPFLAGS=-DGEOIP_EXPORTS" export "LIBS=-lwsock32 -lws2_32"
  7. 또는 그와 export "CFLAGS=-DGEOIP_EXPORTS -O3 -I/usr/local/include" export "LDFLAGS=-L/usr/local/lib -lwsock32 -lws2_32"
  8. ./configure --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 && make

을 시도 할 수는 내가 :)

잘 그것을 구축 관리