New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot install Gem curb on Windows 10 #315

Closed
abdufarag opened this Issue Apr 19, 2017 · 3 comments

Comments

Projects
None yet
3 participants
@abdufarag

abdufarag commented Apr 19, 2017

WHERE IS THE ISSUE ???
I HAVE TRIED ALL SOLUTIONS ON INTERNET BUT NOTHING WORKING !!

C:>gem install curb -- --with-curl-lib="C:/curl-7.27.0-devel-mingw32/bin" --with-curl-include="C:/curl-7.27.0-devel-mingw32/include"
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--with-curl-lib=C:/curl-7.27.0-devel-mingw32/bin --with-curl-include=C:/curl-7.27.0-devel-mingw32/include'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-13264-4p5aww.rb extconf.rb --with-curl-lib=C:/curl-7.27.0-devel-mingw32/bin --with-curl-include=C:/curl-7.27.0-devel-mingw32/include

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include=${curl-dir}/include
--with-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

C:\WINDOWS\system32>curl
curl: try 'curl --help' or 'curl --manual' for more information

C:\WINDOWS\system32>curl --help
Usage: curl [options...]
Options: (H) means HTTP/HTTPS only, (F) means FTP only
--anyauth Pick "any" authentication method (H)
-a, --append Append to target file when uploading (F/SFTP)
--basic Use HTTP Basic Authentication (H)
--cacert FILE CA certificate to verify peer against (SSL)
--capath DIR CA directory to verify peer against (SSL)
-E, --cert CERT[:PASSWD] Client certificate file and password (SSL)
--cert-type TYPE Certificate file type (DER/PEM/ENG) (SSL)
--ciphers LIST SSL ciphers to use (SSL)
--compressed Request compressed response (using deflate or gzip)
-K, --config FILE Specify which config file to read
--connect-timeout SECONDS Maximum time allowed for connection
-C, --continue-at OFFSET Resumed transfer offset
-b, --cookie STRING/FILE String or file to read cookies from (H)
-c, --cookie-jar FILE Write cookies to this file after operation (H)
--create-dirs Create necessary local directory hierarchy
--crlf Convert LF to CRLF in upload
--crlfile FILE Get a CRL list in PEM format from the given file
-d, --data DATA HTTP POST data (H)
--data-ascii DATA HTTP POST ASCII data (H)
--data-binary DATA HTTP POST binary data (H)
--data-urlencode DATA HTTP POST data url encoded (H)
--delegation STRING GSS-API delegation permission
--digest Use HTTP Digest Authentication (H)
--disable-eprt Inhibit using EPRT or LPRT (F)
--disable-epsv Inhibit using EPSV (F)
-D, --dump-header FILE Write the headers to this file
--egd-file FILE EGD socket path for random data (SSL)
--engine ENGINGE Crypto engine (SSL). "--engine list" for list
-f, --fail Fail silently (no output at all) on HTTP errors (H)
-F, --form CONTENT Specify HTTP multipart POST data (H)
--form-string STRING Specify HTTP multipart POST data (H)
--ftp-account DATA Account data string (F)
--ftp-alternative-to-user COMMAND String to replace "USER [name]" (F)
--ftp-create-dirs Create the remote dirs if not present (F)
--ftp-method [MULTICWD/NOCWD/SINGLECWD] Control CWD usage (F)
--ftp-pasv Use PASV/EPSV instead of PORT (F)
-P, --ftp-port ADR Use PORT with given address instead of PASV (F)
--ftp-skip-pasv-ip Skip the IP address for PASV (F)
--ftp-pret Send PRET before PASV (for drftpd) (F)
--ftp-ssl-ccc Send CCC after authenticating (F)
--ftp-ssl-ccc-mode ACTIVE/PASSIVE Set CCC mode (F)
--ftp-ssl-control Require SSL/TLS for ftp login, clear for transfer (F)
-G, --get Send the -d data with a HTTP GET (H)
-g, --globoff Disable URL sequences and ranges using {} and []
-H, --header LINE Custom header to pass to server (H)
-I, --head Show document info only
-h, --help This help text
--hostpubmd5 MD5 Hex encoded MD5 string of the host public key. (SSH)
-0, --http1.0 Use HTTP 1.0 (H)
--ignore-content-length Ignore the HTTP Content-Length header
-i, --include Include protocol headers in the output (H/F)
-k, --insecure Allow connections to SSL sites without certs (H)
--interface INTERFACE Specify network interface/address to use
-4, --ipv4 Resolve name to IPv4 address
-6, --ipv6 Resolve name to IPv6 address
-j, --junk-session-cookies Ignore session cookies read from file (H)
--keepalive-time SECONDS Interval between keepalive probes
--key KEY Private key file name (SSL/SSH)
--key-type TYPE Private key file type (DER/PEM/ENG) (SSL)
--krb LEVEL Enable Kerberos with specified security level (F)
--libcurl FILE Dump libcurl equivalent code of this command line
--limit-rate RATE Limit transfer speed to this rate
-l, --list-only List only names of an FTP directory (F)
--local-port RANGE Force use of these local port numbers
-L, --location Follow redirects (H)
--location-trusted like --location and send auth to other hosts (H)
-M, --manual Display the full manual
--mail-from FROM Mail from this address
--mail-rcpt TO Mail to this receiver(s)
--mail-auth AUTH Originator address of the original email
--max-filesize BYTES Maximum file size to download (H/F)
--max-redirs NUM Maximum number of redirects allowed (H)
-m, --max-time SECONDS Maximum time allowed for the transfer
--metalink Process given URLs as metalink XML file
--negotiate Use HTTP Negotiate Authentication (H)
-n, --netrc Must read .netrc for user name and password
--netrc-optional Use either .netrc or URL; overrides -n
--netrc-file FILE Set up the netrc filename to use
-N, --no-buffer Disable buffering of the output stream
--no-keepalive Disable keepalive use on the connection
--no-sessionid Disable SSL session-ID reusing (SSL)
--noproxy List of hosts which do not use proxy
--ntlm Use HTTP NTLM authentication (H)
-o, --output FILE Write output to instead of stdout
--pass PASS Pass phrase for the private key (SSL/SSH)
--post301 Do not switch to GET after following a 301 redirect (H)
--post302 Do not switch to GET after following a 302 redirect (H)
--post303 Do not switch to GET after following a 303 redirect (H)
-#, --progress-bar Display transfer progress as a progress bar
--proto PROTOCOLS Enable/disable specified protocols
--proto-redir PROTOCOLS Enable/disable specified protocols on redirect
-x, --proxy [PROTOCOL://]HOST[:PORT] Use proxy on given port
--proxy-anyauth Pick "any" proxy authentication method (H)
--proxy-basic Use Basic authentication on the proxy (H)
--proxy-digest Use Digest authentication on the proxy (H)
--proxy-negotiate Use Negotiate authentication on the proxy (H)
--proxy-ntlm Use NTLM authentication on the proxy (H)
-U, --proxy-user USER[:PASSWORD] Proxy user and password
--proxy1.0 HOST[:PORT] Use HTTP/1.0 proxy on given port
-p, --proxytunnel Operate through a HTTP proxy tunnel (using CONNECT)
--pubkey KEY Public key file name (SSH)
-Q, --quote CMD Send command(s) to server before transfer (F/SFTP)
--random-file FILE File for reading random data from (SSL)
-r, --range RANGE Retrieve only the bytes within a range
--raw Do HTTP "raw", without any transfer decoding (H)
-e, --referer Referer URL (H)
-J, --remote-header-name Use the header-provided filename (H)
-O, --remote-name Write output to a file named as the remote file
--remote-name-all Use the remote file name for all URLs
-R, --remote-time Set the remote file's time on the local output
-X, --request COMMAND Specify request command to use
--resolve HOST:PORT:ADDRESS Force resolve of HOST:PORT to ADDRESS
--retry NUM Retry request NUM times if transient problems occur
--retry-delay SECONDS When retrying, wait this many seconds between each
--retry-max-time SECONDS Retry only within this period
-S, --show-error Show error. With -s, make curl show errors when they occur
-s, --silent Silent mode. Don't output anything
--socks4 HOST[:PORT] SOCKS4 proxy on given host + port
--socks4a HOST[:PORT] SOCKS4a proxy on given host + port
--socks5 HOST[:PORT] SOCKS5 proxy on given host + port
--socks5-hostname HOST[:PORT] SOCKS5 proxy, pass host name to proxy
--socks5-gssapi-service NAME SOCKS5 proxy service name for gssapi
--socks5-gssapi-nec Compatibility with NEC SOCKS5 server
-Y, --speed-limit RATE Stop transfers below speed-limit for 'speed-time' secs
-y, --speed-time SECONDS Time for trig speed-limit abort. Defaults to 30
--ssl Try SSL/TLS (FTP, IMAP, POP3, SMTP)
--ssl-reqd Require SSL/TLS (FTP, IMAP, POP3, SMTP)
-2, --sslv2 Use SSLv2 (SSL)
-3, --sslv3 Use SSLv3 (SSL)
--ssl-allow-beast Allow security flaw to improve interop (SSL)
--stderr FILE Where to redirect stderr. - means stdout
--tcp-nodelay Use the TCP_NODELAY option
-t, --telnet-option OPT=VAL Set telnet option
--tftp-blksize VALUE Set TFTP BLKSIZE option (must be >512)
-z, --time-cond TIME Transfer based on a time condition
-1, --tlsv1 Use TLSv1 (SSL)
--trace FILE Write a debug trace to the given file
--trace-ascii FILE Like --trace but without the hex output
--trace-time Add time stamps to trace/verbose output
--tr-encoding Request compressed transfer encoding (H)
-T, --upload-file FILE Transfer FILE to destination
--url URL URL to work with
-B, --use-ascii Use ASCII/text transfer
-u, --user USER[:PASSWORD] Server user and password
--tlsuser USER TLS username
--tlspassword STRING TLS password
--tlsauthtype STRING TLS authentication type (default SRP)
-A, --user-agent STRING User-Agent to send to server (H)
-v, --verbose Make the operation more talkative
-V, --version Show version number and quit
-w, --write-out FORMAT What to output after completion
--xattr Store metadata in extended file attributes
-q If used as the first parameter disables .curlrc

C:\WINDOWS\system32>gem install curb
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-5472-1jcr6.rb extconf.rb

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include
--without-curl-include=${curl-dir}/include
--with-curl-lib
--without-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

C:\WINDOWS\system32>gem install curb -- --with-curl-lib=C:/curl-7.53.1-win32-mingw/lib --with-curl-include=C:/curl-7.53.1-win32-mingw/include
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--with-curl-lib=C:/curl-7.53.1-win32-mingw/lib --with-curl-include=C:/curl-7.53.1-win32-mingw/include'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-12480-m1tmk3.rb extconf.rb --with-curl-lib=C:/curl-7.53.1-win32-mingw/lib --with-curl-include=C:/curl-7.53.1-win32-mingw/include

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include=${curl-dir}/include
--with-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

C:\WINDOWS\system32>gem install curb -- --with-curl-lib=C:/curl-7.53.1-win32-mingw/bin --with-curl-include=C:/curl-7.53.1-win32-mingw/include
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--with-curl-lib=C:/curl-7.53.1-win32-mingw/bin --with-curl-include=C:/curl-7.53.1-win32-mingw/include'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-13928-fxgniq.rb extconf.rb --with-curl-lib=C:/curl-7.53.1-win32-mingw/bin --with-curl-include=C:/curl-7.53.1-win32-mingw/include

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include=${curl-dir}/include
--with-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

C:\WINDOWS\system32>cd C:\curl_x64\winbuild

C:\curl_x64\winbuild>dir *.exe
Volume in drive C has no label.
Volume Serial Number is 8C65-D3AF

Directory of C:\curl_x64\winbuild

File Not Found

C:\curl_x64\winbuild>dir *.exe
Volume in drive C has no label.
Volume Serial Number is 8C65-D3AF

Directory of C:\curl_x64\winbuild

File Not Found

C:\curl_x64\winbuild>dir *.bat
Volume in drive C has no label.
Volume Serial Number is 8C65-D3AF

Directory of C:\curl_x64\winbuild

06/03/2016 11:36 PM 146 gen_resp_file.bat
1 File(s) 146 bytes
0 Dir(s) 22,997,245,952 bytes free

C:\curl_x64\winbuild>gen_resp_file.bat
The syntax of the command is incorrect.
The syntax of the command is incorrect.

C:\curl_x64\winbuild>gen_resp_file.bat
The syntax of the command is incorrect.
The syntax of the command is incorrect.

C:\curl_x64\winbuild>nmake /f Makefile.vc mode=dll WITH_SSL=dll
'nmake' is not recognized as an internal or external command,
operable program or batch file.

C:\curl_x64\winbuild>cd\

C:>gem install curb -- --platform=mswin32 --with-curl-lib=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\bin --with-curl-include=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\include
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--platform=mswin32 --with-curl-lib=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\bin --with-curl-include=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\include'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-13780-b7q23z.rb extconf.rb --platform=mswin32 --with-curl-lib=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\bin --with-curl-include=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\include

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include=${curl-dir}/include
--with-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

C:>gem install curb -- --platform=mswin32 --with-curl-lib=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\lib --with-curl-include=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\include
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--platform=mswin32 --with-curl-lib=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\lib --with-curl-include=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\include'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-2264-grwkd4.rb extconf.rb --platform=mswin32 --with-curl-lib=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\lib --with-curl-include=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\include

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include=${curl-dir}/include
--with-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

C:>gem install curb -- --platform=mswin32 --with-curl-lib=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\lib --with-curl-include=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\include
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--platform=mswin32 --with-curl-lib=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\lib --with-curl-include=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\include'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-14808-1svpsnb.rb extconf.rb --platform=mswin32 --with-curl-lib=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\lib --with-curl-include=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\include

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include=${curl-dir}/include
--with-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

C:>gem install curb -- --platform=mswin32 --with-curl-lib=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\lib --with-curl-include=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\include
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--platform=mswin32 --with-curl-lib=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\lib --with-curl-include=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\include'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-13496-18t8iag.rb extconf.rb --platform=mswin32 --with-curl-lib=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\lib --with-curl-include=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\include

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include=${curl-dir}/include
--with-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

C:>gem install curb -- --platform=mswin32 -with-curl-lib=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\bin -with-curl-include=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\include
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--platform=mswin32 -with-curl-lib=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\bin -with-curl-include=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\include'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-10164-18sc36h.rb extconf.rb --platform=mswin32 -with-curl-lib=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\bin -with-curl-include=C:\libcurl-vc-x86-release-dll-ipv6-sspi-winssl\include

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include
--without-curl-include=${curl-dir}/include
--with-curl-lib
--without-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

C:>gem install curb -- --with-opt-dir=C:/curl-7.53.1-win32-mingw
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--with-opt-dir=C:/curl-7.53.1-win32-mingw'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-5600-5dfhg1.rb extconf.rb --with-opt-dir=C:/curl-7.53.1-win32-mingw

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include
--without-curl-include=${curl-dir}/include
--with-curl-lib
--without-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

C:>gem install curb -- --with-opt-dir=C:/curl-7.27.0-devel-mingw32
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--with-opt-dir=C:/curl-7.27.0-devel-mingw32'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-4544-15e551e.rb extconf.rb --with-opt-dir=C:/curl-7.27.0-devel-mingw32

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include
--without-curl-include=${curl-dir}/include
--with-curl-lib
--without-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

C:>gem install curb -- --with-curl-dir=C:/curl-7.27.0-devel-mingw32
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--with-curl-dir=C:/curl-7.27.0-devel-mingw32'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-3556-1l9huxt.rb extconf.rb --with-curl-dir=C:/curl-7.27.0-devel-mingw32

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--with-curl-include
--without-curl-include=${curl-dir}/include
--with-curl-lib
--without-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

C:>gem install curb -- --with-curl-lib=c:/curl-7.27.0-devel-mingw32/lib --with-curl-include=c:/curl-7.27.0-devel-mingw32/include
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--with-curl-lib=c:/curl-7.27.0-devel-mingw32/lib --with-curl-include=c:/curl-7.27.0-devel-mingw32/include'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-5632-1sn4o39.rb extconf.rb --with-curl-lib=c:/curl-7.27.0-devel-mingw32/lib --with-curl-include=c:/curl-7.27.0-devel-mingw32/include

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include=${curl-dir}/include
--with-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

C:>gem install curb -- --with-curl-lib=c:/curl-7.27.0-devel-mingw32/bin --with-curl-include=c:/curl-7.27.0-devel-mingw32/include
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--with-curl-lib=c:/curl-7.27.0-devel-mingw32/bin --with-curl-include=c:/curl-7.27.0-devel-mingw32/include'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-5456-1ob1m2v.rb extconf.rb --with-curl-lib=c:/curl-7.27.0-devel-mingw32/bin --with-curl-include=c:/curl-7.27.0-devel-mingw32/include

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include=${curl-dir}/include
--with-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

C:>gem install curb --version 0.7.18 --platform=ruby -- -- --with-curl-lib="C:/curl-7.27.0-devel-mingw32/bin" --with-curl-include="C:/curl-7.27.0-devel-mingw32/include"
Fetching: curb-0.7.18.gem (100%)
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '-- --with-curl-lib=C:/curl-7.27.0-devel-mingw32/bin --with-curl-include=C:/curl-7.27.0-devel-mingw32/include'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-9928-m34vlx.rb extconf.rb -- --with-curl-lib=C:/curl-7.27.0-devel-mingw32/bin --with-curl-include=C:/curl-7.27.0-devel-mingw32/include

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include=${curl-dir}/include
--with-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.7.18 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.7.18/gem_make.out

C:>gem install curb --version 0.7.18 --platform=ruby -- -- --with-curl-lib="C:/curl-7.27.0-devel-mingw32/lib" --with-curl-include="C:/curl-7.27.0-devel-mingw32/include"
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '-- --with-curl-lib=C:/curl-7.27.0-devel-mingw32/lib --with-curl-include=C:/curl-7.27.0-devel-mingw32/include'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-12512-5z1zvs.rb extconf.rb -- --with-curl-lib=C:/curl-7.27.0-devel-mingw32/lib --with-curl-include=C:/curl-7.27.0-devel-mingw32/include

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include=${curl-dir}/include
--with-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.7.18 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.7.18/gem_make.out

C:>gem install curb -- --with-curl-lib="C:/curl-7.27.0-devel-mingw32/lib" --with-curl-include="C:/curl-7.27.0-devel-mingw32/include"
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--with-curl-lib=C:/curl-7.27.0-devel-mingw32/lib --with-curl-include=C:/curl-7.27.0-devel-mingw32/include'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-6324-rqbdx0.rb extconf.rb --with-curl-lib=C:/curl-7.27.0-devel-mingw32/lib --with-curl-include=C:/curl-7.27.0-devel-mingw32/include

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include=${curl-dir}/include
--with-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

C:>gem install curb -- --with-curl-lib="C:/curl-7.27.0-devel-mingw32/bin" --with-curl-include="C:/curl-7.27.0-devel-mingw32/include"
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--with-curl-lib=C:/curl-7.27.0-devel-mingw32/bin --with-curl-include=C:/curl-7.27.0-devel-mingw32/include'
This could take a while...
ERROR: Error installing curb:
ERROR: Failed to build gem native extension.

C:/Ruby22-x64/bin/ruby.exe -r ./siteconf20170418-13264-4p5aww.rb extconf.rb --with-curl-lib=C:/curl-7.27.0-devel-mingw32/bin --with-curl-include=C:/curl-7.27.0-devel-mingw32/include

checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby22-x64/bin/$(RUBY_BASE_NAME)
--with-curl-dir
--without-curl-dir
--with-curl-include=${curl-dir}/include
--with-curl-lib=${curl-dir}/lib
--with-curllib
--without-curllib
extconf.rb:18:in `

': Can't find libcurl or curl/curl.h (RuntimeError)

Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
options to extconf.

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/curb-0.9.3 for inspection.
Results logged to C:/Ruby22-x64/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/curb-0.9.3/gem_make.out

@roscopeco

This comment has been minimized.

Show comment
Hide comment
@roscopeco

roscopeco Apr 19, 2017

Collaborator

I understand your frustration, but there's really no need to shout... ;)

Most likely, your compiled libcurl is incompatible with the ruby devkit compiler. You can verify this by running (this is on my machine, obviously change your paths):

>c:\Ruby200Devkit\mingw\bin\gcc.exe -L. -lcurl
# c:/ruby200devkit/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible ./libcurl.dll when searching for -lcurl
# c:/ruby200devkit/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible ./libcurl.dll when searching for -lcurl
# c:/ruby200devkit/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32# # /bin/ld.exe: cannot find -lcurl
# collect2.exe: error: ld returned 1 exit status

Notice the lines about "Skipping incompatible version" before the final "cannot find lcurl". Try grabbing the curl source from https://curl.haxx.se/download/curl-7.54.0.tar.gz , extract it somewhere, and then open up a terminal and try the following:

> c:\path-to-your-ruby-devkit\devkitvars.sh
> which gcc
# important - verify here that the gcc is the one from your ruby devkit!
> cd <path-to-extracted-curl-source>
> sh configure --with-winssl     # and whatever other options you require
> make
> make install

It's very important that you don't have any other mingw/msys/cygwin compilers in your path, and that you do this in a windows terminal, not msys/cygwin sh. Otherwise, you'll probably just build another incompatible library.

You should now have libcurl-4.dll in c:\path-to-your-ruby-devkit\local\bin. Now it gets a bit messy, so hang in there. This part is probably a bug in the build, but easy to work around.

> cd c:\path-to-your-ruby-devkit\local\bin
> copy libcurl-4.dll libcurl.dll

The build needs libcurl.dll (it won't compile with libcurl-4.dll, but the extension won't run without the -4 suffix, so we'll have to manually copy the dll later on).

> gem install curb -- --with-curl-lib=c:\path-to-your-ruby-devkit\local\bin --with-curl-include=c:\path-to-your-ruby-devkit\local\include

Assuming the build goes well (it should, though it might take a while), you now just need to copy the curl dll to the appropriate place:

> copy c:\path-to-your-ruby-devkit\local\bin\libcurl-4.dll C:\Ruby22-x64\lib\ruby\gems\2.2.0\gems\curb-0.9.3\ext

Now run irb -rcurl and, all being well, you should be good to go.

As an aside to the above, @taf2 is there any appetite for doing a binary gem? It'd probably have to bundle libcurl as well, but it's MIT licensed so shouldn't be a huge problem, if you ignore the fact that it's ~500K of added weight.

I'm doing some work on Windows these days and now RubyInstaller seems to be using mingw instead of VC I'd be happy to contribute if I can...

Collaborator

roscopeco commented Apr 19, 2017

I understand your frustration, but there's really no need to shout... ;)

Most likely, your compiled libcurl is incompatible with the ruby devkit compiler. You can verify this by running (this is on my machine, obviously change your paths):

>c:\Ruby200Devkit\mingw\bin\gcc.exe -L. -lcurl
# c:/ruby200devkit/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible ./libcurl.dll when searching for -lcurl
# c:/ruby200devkit/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible ./libcurl.dll when searching for -lcurl
# c:/ruby200devkit/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32# # /bin/ld.exe: cannot find -lcurl
# collect2.exe: error: ld returned 1 exit status

Notice the lines about "Skipping incompatible version" before the final "cannot find lcurl". Try grabbing the curl source from https://curl.haxx.se/download/curl-7.54.0.tar.gz , extract it somewhere, and then open up a terminal and try the following:

> c:\path-to-your-ruby-devkit\devkitvars.sh
> which gcc
# important - verify here that the gcc is the one from your ruby devkit!
> cd <path-to-extracted-curl-source>
> sh configure --with-winssl     # and whatever other options you require
> make
> make install

It's very important that you don't have any other mingw/msys/cygwin compilers in your path, and that you do this in a windows terminal, not msys/cygwin sh. Otherwise, you'll probably just build another incompatible library.

You should now have libcurl-4.dll in c:\path-to-your-ruby-devkit\local\bin. Now it gets a bit messy, so hang in there. This part is probably a bug in the build, but easy to work around.

> cd c:\path-to-your-ruby-devkit\local\bin
> copy libcurl-4.dll libcurl.dll

The build needs libcurl.dll (it won't compile with libcurl-4.dll, but the extension won't run without the -4 suffix, so we'll have to manually copy the dll later on).

> gem install curb -- --with-curl-lib=c:\path-to-your-ruby-devkit\local\bin --with-curl-include=c:\path-to-your-ruby-devkit\local\include

Assuming the build goes well (it should, though it might take a while), you now just need to copy the curl dll to the appropriate place:

> copy c:\path-to-your-ruby-devkit\local\bin\libcurl-4.dll C:\Ruby22-x64\lib\ruby\gems\2.2.0\gems\curb-0.9.3\ext

Now run irb -rcurl and, all being well, you should be good to go.

As an aside to the above, @taf2 is there any appetite for doing a binary gem? It'd probably have to bundle libcurl as well, but it's MIT licensed so shouldn't be a huge problem, if you ignore the fact that it's ~500K of added weight.

I'm doing some work on Windows these days and now RubyInstaller seems to be using mingw instead of VC I'd be happy to contribute if I can...

@abdufarag

This comment has been minimized.

Show comment
Hide comment
@abdufarag

abdufarag Apr 20, 2017

Hi Ross Bamford,

I really appreciate your reply, the solution worked prefect ... thanks too much

abdufarag commented Apr 20, 2017

Hi Ross Bamford,

I really appreciate your reply, the solution worked prefect ... thanks too much

@maxence33

This comment has been minimized.

Show comment
Hide comment
@maxence33

maxence33 Aug 31, 2017

Hi Ross,

Your solution worked perfectly for a curb install that was preventing my Puma server to launch. ( #321 )
This was like a miracle after a lot of trouble installing curb.

Yet, when trying to do the same on another computer it failed miserably when trying to generate the libcurl.dll when doing make

C:\curl-7.55.1>make
Making all in lib
make[1]: Entering directory `/c/curl-7.55.1/lib'
make  all-am
make[2]: Entering directory `/c/curl-7.55.1/lib'
make[2]: Leaving directory `/c/curl-7.55.1/lib'
make[1]: Leaving directory `/c/curl-7.55.1/lib'
Making all in src
make[1]: Entering directory `/c/curl-7.55.1/src'
Making all in ../docs
make[2]: Entering directory `/c/curl-7.55.1/docs'
Making all in .
make[3]: Entering directory `/c/curl-7.55.1/docs'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/c/curl-7.55.1/docs'
Making all in cmdline-opts
make[3]: Entering directory `/c/curl-7.55.1/docs/cmdline-opts'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/c/curl-7.55.1/docs/cmdline-opts'
make[2]: Leaving directory `/c/curl-7.55.1/docs'
make[2]: Entering directory `/c/curl-7.55.1/src'
  CCLD     curl.exe
curl-slist_wc.o:slist_wc.c:(.text+0x20): undefined reference to `_imp__curl_slist_append'
curl-slist_wc.o:slist_wc.c:(.text+0x69): undefined reference to `_imp__curl_slist_free_all'
curl-slist_wc.o:slist_wc.c:(.text+0x93): undefined reference to `_imp__curl_slist_free_all'
curl-tool_cb_dbg.o:tool_cb_dbg.c:(.text+0xbe): undefined reference to `_imp__curl_msnprintf'
curl-tool_cb_dbg.o:tool_cb_dbg.c:(.text+0x19a): undefined reference to `_imp__curl_mfprintf'
curl-tool_cb_dbg.o:tool_cb_dbg.c:(.text+0x33f): undefined reference to `_imp__curl_mfprintf'
curl-tool_cb_dbg.o:tool_cb_dbg.c:(.text+0x41d): undefined reference to `_imp__curl_mfprintf'
curl-tool_cb_dbg.o:tool_cb_dbg.c:(.text+0x49d): undefined reference to `_imp__curl_mfprintf'
curl-tool_cb_dbg.o:tool_cb_dbg.c:(.text+0x640): undefined reference to `_imp__curl_mfprintf'
curl-tool_cb_dbg.o:tool_cb_dbg.c:(.text+0x690): more undefined references to `_imp__curl_mfprintf' follow
c:/devkit-mingw64-32-4.7.2/mingw/bin/../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w64-mingw32/bin/ld.exe: curl-tool_cb_dbg.o: bad reloc address 0xec in sectio
n `.rdata'
c:/devkit-mingw64-32-4.7.2/mingw/bin/../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w64-mingw32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: error: ld returned 1 exit status
make[2]: *** [curl.exe] Error 1
make[2]: Leaving directory `/c/curl-7.55.1/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/c/curl-7.55.1/src'
make: *** [all-recursive] Error 1

Not sure what is the problem as I did exactly what I did on he other computer. devkit is properly installed. The environment paths are same...

I still hav a computer to work on with curl so this isn't an emergency but if you have any suggestion I am happy to try it

(NB I am using curl-7.55.1 here as I used curl-7.55.0 on the other computer but then I copied over the sources and it gave same result)

maxence33 commented Aug 31, 2017

Hi Ross,

Your solution worked perfectly for a curb install that was preventing my Puma server to launch. ( #321 )
This was like a miracle after a lot of trouble installing curb.

Yet, when trying to do the same on another computer it failed miserably when trying to generate the libcurl.dll when doing make

C:\curl-7.55.1>make
Making all in lib
make[1]: Entering directory `/c/curl-7.55.1/lib'
make  all-am
make[2]: Entering directory `/c/curl-7.55.1/lib'
make[2]: Leaving directory `/c/curl-7.55.1/lib'
make[1]: Leaving directory `/c/curl-7.55.1/lib'
Making all in src
make[1]: Entering directory `/c/curl-7.55.1/src'
Making all in ../docs
make[2]: Entering directory `/c/curl-7.55.1/docs'
Making all in .
make[3]: Entering directory `/c/curl-7.55.1/docs'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/c/curl-7.55.1/docs'
Making all in cmdline-opts
make[3]: Entering directory `/c/curl-7.55.1/docs/cmdline-opts'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/c/curl-7.55.1/docs/cmdline-opts'
make[2]: Leaving directory `/c/curl-7.55.1/docs'
make[2]: Entering directory `/c/curl-7.55.1/src'
  CCLD     curl.exe
curl-slist_wc.o:slist_wc.c:(.text+0x20): undefined reference to `_imp__curl_slist_append'
curl-slist_wc.o:slist_wc.c:(.text+0x69): undefined reference to `_imp__curl_slist_free_all'
curl-slist_wc.o:slist_wc.c:(.text+0x93): undefined reference to `_imp__curl_slist_free_all'
curl-tool_cb_dbg.o:tool_cb_dbg.c:(.text+0xbe): undefined reference to `_imp__curl_msnprintf'
curl-tool_cb_dbg.o:tool_cb_dbg.c:(.text+0x19a): undefined reference to `_imp__curl_mfprintf'
curl-tool_cb_dbg.o:tool_cb_dbg.c:(.text+0x33f): undefined reference to `_imp__curl_mfprintf'
curl-tool_cb_dbg.o:tool_cb_dbg.c:(.text+0x41d): undefined reference to `_imp__curl_mfprintf'
curl-tool_cb_dbg.o:tool_cb_dbg.c:(.text+0x49d): undefined reference to `_imp__curl_mfprintf'
curl-tool_cb_dbg.o:tool_cb_dbg.c:(.text+0x640): undefined reference to `_imp__curl_mfprintf'
curl-tool_cb_dbg.o:tool_cb_dbg.c:(.text+0x690): more undefined references to `_imp__curl_mfprintf' follow
c:/devkit-mingw64-32-4.7.2/mingw/bin/../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w64-mingw32/bin/ld.exe: curl-tool_cb_dbg.o: bad reloc address 0xec in sectio
n `.rdata'
c:/devkit-mingw64-32-4.7.2/mingw/bin/../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w64-mingw32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: error: ld returned 1 exit status
make[2]: *** [curl.exe] Error 1
make[2]: Leaving directory `/c/curl-7.55.1/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/c/curl-7.55.1/src'
make: *** [all-recursive] Error 1

Not sure what is the problem as I did exactly what I did on he other computer. devkit is properly installed. The environment paths are same...

I still hav a computer to work on with curl so this isn't an emergency but if you have any suggestion I am happy to try it

(NB I am using curl-7.55.1 here as I used curl-7.55.0 on the other computer but then I copied over the sources and it gave same result)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment