fix bundled static build on Windows/MinGW #761

Merged
vladimir-buzuev merged 1 commits from bundled_static_windows into master 2021-04-03 20:45:09 -05:00
vladimir-buzuev commented 2021-04-03 19:40:08 -05:00 (Migrated from github.com)

When building on Windows with MinGW using "bundled static" config, I am getting following errors

GOROOT=C:\Program Files\Go #gosetup
GOPATH=C:\Users\vbuzu\go #gosetup
"C:\Program Files\Go\bin\go.exe" test -c -tags static -o C:\Users\vbuzu\AppData\Local\Temp\___1TestConfigLookups_in_github_com_libgit2_git2go_v31.exe github.com/libgit2/git2go/v31 #gosetup
# github.com/libgit2/git2go/v31
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(index.c.obj): In function `write_extension':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/index.c:2865: undefined reference to `__imp_htonl'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(index.c.obj): In function `read_header':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/index.c:2537: undefined reference to `__imp_ntohl'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(index.c.obj): In function `read_entry':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/index.c:2456: undefined reference to `__imp_ntohs'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/index.c:2465: undefined reference to `__imp_ntohs'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(index.c.obj): In function `write_index':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/index.c:3022: undefined reference to `__imp_htonl'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(index.c.obj): In function `write_disk_entry':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/index.c:2781: undefined reference to `__imp_htons'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/index.c:2787: undefined reference to `__imp_htons'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(indexer.c.obj): In function `crc_object':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/indexer.c:317: undefined reference to `__imp_htonl'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(indexer.c.obj): In function `parse_header':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/indexer.c:98: undefined reference to `__imp_ntohl'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/indexer.c:103: undefined reference to `__imp_htonl'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(indexer.c.obj): In function `update_header_and_rehash':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/indexer.c:1074: undefined reference to `__imp_htonl'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(indexer.c.obj): In function `git_indexer_commit':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/indexer.c:1193: undefined reference to `__imp_htonl'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(indexer.c.obj): In function `inject_object':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/indexer.c:911: undefined reference to `__imp_htonl'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(pack-objects.c.obj): In function `write_pack':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/pack-objects.c:648: undefined reference to `__imp_htonl'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(pack.c.obj):C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/pack.c:236: more undefined references to `__imp_htonl' follow
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(pack.c.obj): In function `pack_index_check':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/pack.c:245: undefined reference to `__imp_ntohl'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(pack.c.obj): In function `packfile_open':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/pack.c:1055: undefined reference to `__imp_htonl'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/pack.c:1060: undefined reference to `__imp_ntohl'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(pack.c.obj): In function `pack_entry_find_offset':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/pack.c:1314: undefined reference to `__imp_ntohl'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(winhttp.c.obj): In function `acquire_fallback_cred':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/transports/winhttp.c:246: undefined reference to `__imp_CoInitializeEx'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/transports/winhttp.c:252: undefined reference to `__imp_CoCreateInstance'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/transports/winhttp.c:274: undefined reference to `__imp_CoUninitialize'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(winhttp.c.obj): In function `certificate_check':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/transports/winhttp.c:312: undefined reference to `__imp_CertFreeCertificateContext'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(winhttp.c.obj): In function `put_uuid_string':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/transports/winhttp.c:1278: undefined reference to `__imp_UuidCreate'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(posix_w32.c.obj): In function `p_recv':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/win32/posix_w32.c:908: undefined reference to `__imp_recv'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(posix_w32.c.obj): In function `p_send':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/win32/posix_w32.c:916: undefined reference to `__imp_send'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(posix_w32.c.obj): In function `p_inet_pton':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/win32/posix_w32.c:966: undefined reference to `__imp_WSAStringToAddressA'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/win32/posix_w32.c:971: undefined reference to `__imp_WSAGetLastError'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(socket.c.obj): In function `close_socket':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:57: undefined reference to `__imp_closesocket'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:60: undefined reference to `__imp_WSACleanup'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(socket.c.obj): In function `socket_connect':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:85: undefined reference to `__imp_WSAStartup'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:101: undefined reference to `__imp_getaddrinfo'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:107: undefined reference to `__imp_socket'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:113: undefined reference to `__imp_connect'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:124: undefined reference to `__imp_freeaddrinfo'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:129: undefined reference to `__imp_freeaddrinfo'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:91: undefined reference to `__imp_WSACleanup'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:102: undefined reference to `gai_strerrorA'
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(socket.c.obj): In function `net_set_error':
C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:34: undefined reference to `__imp_WSAGetLastError'
collect2.exe: error: ld returned 1 exit status

Compilation finished with exit code 2

seems like need more libraries in LDFLAGS:

  • ws2_32 for socket, connect, htonl, etc
  • ole32 for CoInitializeEx
  • rpcrt4 for UuidCreate
  • crypt32 for CertFreeCertificateContext
When building on Windows with MinGW using "bundled static" config, I am getting following errors ``` GOROOT=C:\Program Files\Go #gosetup GOPATH=C:\Users\vbuzu\go #gosetup "C:\Program Files\Go\bin\go.exe" test -c -tags static -o C:\Users\vbuzu\AppData\Local\Temp\___1TestConfigLookups_in_github_com_libgit2_git2go_v31.exe github.com/libgit2/git2go/v31 #gosetup # github.com/libgit2/git2go/v31 C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(index.c.obj): In function `write_extension': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/index.c:2865: undefined reference to `__imp_htonl' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(index.c.obj): In function `read_header': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/index.c:2537: undefined reference to `__imp_ntohl' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(index.c.obj): In function `read_entry': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/index.c:2456: undefined reference to `__imp_ntohs' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/index.c:2465: undefined reference to `__imp_ntohs' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(index.c.obj): In function `write_index': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/index.c:3022: undefined reference to `__imp_htonl' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(index.c.obj): In function `write_disk_entry': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/index.c:2781: undefined reference to `__imp_htons' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/index.c:2787: undefined reference to `__imp_htons' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(indexer.c.obj): In function `crc_object': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/indexer.c:317: undefined reference to `__imp_htonl' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(indexer.c.obj): In function `parse_header': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/indexer.c:98: undefined reference to `__imp_ntohl' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/indexer.c:103: undefined reference to `__imp_htonl' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(indexer.c.obj): In function `update_header_and_rehash': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/indexer.c:1074: undefined reference to `__imp_htonl' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(indexer.c.obj): In function `git_indexer_commit': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/indexer.c:1193: undefined reference to `__imp_htonl' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(indexer.c.obj): In function `inject_object': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/indexer.c:911: undefined reference to `__imp_htonl' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(pack-objects.c.obj): In function `write_pack': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/pack-objects.c:648: undefined reference to `__imp_htonl' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(pack.c.obj):C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/pack.c:236: more undefined references to `__imp_htonl' follow C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(pack.c.obj): In function `pack_index_check': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/pack.c:245: undefined reference to `__imp_ntohl' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(pack.c.obj): In function `packfile_open': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/pack.c:1055: undefined reference to `__imp_htonl' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/pack.c:1060: undefined reference to `__imp_ntohl' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(pack.c.obj): In function `pack_entry_find_offset': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/pack.c:1314: undefined reference to `__imp_ntohl' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(winhttp.c.obj): In function `acquire_fallback_cred': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/transports/winhttp.c:246: undefined reference to `__imp_CoInitializeEx' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/transports/winhttp.c:252: undefined reference to `__imp_CoCreateInstance' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/transports/winhttp.c:274: undefined reference to `__imp_CoUninitialize' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(winhttp.c.obj): In function `certificate_check': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/transports/winhttp.c:312: undefined reference to `__imp_CertFreeCertificateContext' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(winhttp.c.obj): In function `put_uuid_string': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/transports/winhttp.c:1278: undefined reference to `__imp_UuidCreate' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(posix_w32.c.obj): In function `p_recv': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/win32/posix_w32.c:908: undefined reference to `__imp_recv' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(posix_w32.c.obj): In function `p_send': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/win32/posix_w32.c:916: undefined reference to `__imp_send' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(posix_w32.c.obj): In function `p_inet_pton': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/win32/posix_w32.c:966: undefined reference to `__imp_WSAStringToAddressA' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/win32/posix_w32.c:971: undefined reference to `__imp_WSAGetLastError' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(socket.c.obj): In function `close_socket': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:57: undefined reference to `__imp_closesocket' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:60: undefined reference to `__imp_WSACleanup' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(socket.c.obj): In function `socket_connect': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:85: undefined reference to `__imp_WSAStartup' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:101: undefined reference to `__imp_getaddrinfo' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:107: undefined reference to `__imp_socket' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:113: undefined reference to `__imp_connect' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:124: undefined reference to `__imp_freeaddrinfo' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:129: undefined reference to `__imp_freeaddrinfo' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:91: undefined reference to `__imp_WSACleanup' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:102: undefined reference to `gai_strerrorA' C:/Users/vbuzu/projects/vladimir-buzuev/git2go/static-build/install/lib//libgit2.a(socket.c.obj): In function `net_set_error': C:/Users/vbuzu/projects/vladimir-buzuev/git2go/vendor/libgit2/src/streams/socket.c:34: undefined reference to `__imp_WSAGetLastError' collect2.exe: error: ld returned 1 exit status Compilation finished with exit code 2 ``` seems like need more libraries in LDFLAGS: - ws2_32 for socket, connect, htonl, etc - ole32 for CoInitializeEx - rpcrt4 for UuidCreate - crypt32 for CertFreeCertificateContext
lhchavez (Migrated from github.com) approved these changes 2021-04-03 20:44:42 -05:00
lhchavez (Migrated from github.com) left a comment

i know nothing about windows, so i trust you blindly, hahaha. thanks!

i know nothing about windows, so i trust you blindly, hahaha. thanks!
Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: jcarr/git2go#761
No description provided.