未定義参照 'curl_free' エラーです。何をすべきかが見つかりません

未定義参照 'curl_free' エラーです。何をすべきかが見つかりません

インストールしようとしました。openn0wしかし、makeを実行するとエラーが発生します。

../../libsn0wcore/libsn0wcore.so: undefined reference to `curl_free'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_open'
../../libsn0wcore/libsn0wcore.so: undefined reference to `curl_global_cleanup'
../../libsn0wcore/libsn0wcore.so: undefined reference to `curl_easy_getinfo'
../../libsn0wcore/libsn0wcore.so: undefined reference to `curl_easy_perform'
../../libsn0wcore/libsn0wcore.so: undefined reference to `curl_easy_unescape'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_set_interface_alt_setting'
../../libsn0wcore/libsn0wcore.so: undefined reference to `AES_set_encrypt_key'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_release_interface'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_close'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_get_string_descriptor_ascii'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_get_configuration'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_clear_halt'
../../libsn0wcore/libsn0wcore.so: undefined reference to `AES_cbc_encrypt'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_get_device_list'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_bulk_transfer'
../../libsn0wcore/libsn0wcore.so: undefined reference to `SHA1_Update'
../../libsn0wcore/libsn0wcore.so: undefined reference to `curl_easy_init'
../../libsn0wcore/libsn0wcore.so: undefined reference to `AES_set_decrypt_key'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_set_configuration'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_reset_device'
../../libsn0wcore/libsn0wcore.so: undefined reference to `SHA1_Init'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_exit'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_init'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_get_device_descriptor'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_free_device_list'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_claim_interface'
../../libsn0wcore/libsn0wcore.so: undefined reference to `libusb_control_transfer'
../../libsn0wcore/libsn0wcore.so: undefined reference to `curl_easy_setopt'
../../libsn0wcore/libsn0wcore.so: undefined reference to `curl_easy_cleanup'
../../libsn0wcore/libsn0wcore.so: undefined reference to `SHA1_Final'
collect2: error: ld returned 1 exit status
Failed to link opensn0w_cli!
make[5]: *** [opensn0w_cli] Error 1
make[4]: *** [all] Error 2
make[3]: *** [subdirs] Error 2
make[2]: *** [all] Error 2
make[1]: *** [subdirs] Error 2
make: *** [all] Error 2

どこでも解決策が見つかりません。 -lcurl を追加する回答を見つけて試してみましたが、うまくいきませmake -lcurlんでした。この問題を解決する方法を知っていますか?

私はLinux Mint 17.3を使用しています。実行してみると、apt-get install libcurl4-openssl-dev最新バージョンがインストールされていると出てきます。

./構成出力:

checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
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 gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /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 special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for library containing strerror... none required
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether ln -s works... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for rm... /bin/rm
checking for mv... /bin/mv
checking for cp... /bin/cp
checking for ln... /bin/ln
checking for tar... /bin/tar
checking for ar... /usr/bin/ar
checking for ranlib... /usr/bin/ranlib
checking for xargs... /usr/bin/xargs
checking for find... /usr/bin/find
checking for uname... /bin/uname
checking for inline... inline
checking whether byte ordering is bigendian... no
checking whether make sets $(MAKE)... yes
checking how to generate dependency info... assuming gcc -MM
checking for link.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for tput... /usr/bin/tput
checking for shared library system... GNU
checking whether we need an implib... no
checking for strftime... yes
checking for strdup... yes
checking for inet_pton... yes
checking for inet_ntop... yes
checking for gettimeofday... yes
checking for umask... yes
checking for mmap... yes
checking for arc4random... no
checking for getrlimit... yes
checking for fork... yes
checking for getpid... yes
checking for execve... yes
checking for socket... yes
checking for gethostbyname... yes
checking for inflate... no
checking for inflate in -lz... yes
checking for dlsym in -ldl... yes
checking for dlsym in -lelf... no
checking for pthread_join in -lpthread... yes
checking for libusb_init in -lusb-1.0... no
checking for readline in -lreadline... no
checking for curl_free in -lcurl... yes
checking for curl_free in -lcurldll... no
checking for SHA1_Init in -lcrypto... yes
checking for SHA1_Init in -lssl... yes
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for an ANSI C-conforming const... yes
checking for uid_t in sys/types.h... yes
checking for inline... (cached) inline
checking whether byte ordering is bigendian... (cached) no
checking for int16_t... yes
checking for int32_t... yes
checking for int8_t... yes
checking for mode_t... yes
checking for off_t... yes
checking for pid_t... yes
checking for size_t... yes
checking for ssize_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking for uint16_t... yes
checking for uint32_t... yes
checking for uint64_t... yes
checking for uint8_t... yes
checking for working volatile... yes
checking for gcc option to accept ISO C99... -std=gnu99
checking if you want to use absolute paths when building... #
checking if you want FHS-like pathnames... no
checking GCC flag(s) -std=gnu99... ok
checking GCC flag(s) -Werror-implicit-function-declaration... ok
checking if we should compile contrib modules... no
no
configure: touching .deps files
configure: creating ./config.status
config.status: creating buildsys.mk
config.status: creating extra.mk
config.status: creating include/config.h
config.status: include/config.h is unchanged

Configuration:
    opensn0w version     : 2.0.0
    Installation prefix  : /usr/local/opensn0w
    Module root directory: /usr/local/opensn0w
    Config directory     : ${prefix}/etc
    Contrib modules      : no
    Stacktrace           : no
    CFLAGS               : -g -O2

Type make to build opensn0w, and make install to install it.

ベストアンサー1

バイナリをリンクするには、-lcurlを指定する必要があります。 makeコマンドラインは、サブコマンドを連結する代わりにmakeコマンドをパラメータ化します。

ビルドスクリプトを確認する必要があります。ソースコードを確認すると、gnu autoconfを使用して古いソースコードを確認できます。使用

LDFLAGS=-lcurl

./configure プレフィックスは、構成フェーズでより正確な makefile を生成できます。

エラーメッセージは、libcurlが欠落しているだけでなく、他のライブラリ(libusb、一部の暗号化ライブラリなど)もありません。

注#2:ほとんどの場合、これらの問題はリンカフラグによるものではなく、システムに必要な開発パッケージがないために発生します。これが ./configure がカールを完全に無効にする理由です。その場合はインストールしてください。 Debian では次のことができます。

apt-get install libcurl-dev

注文する。その後、構成を再実行します。

注#3:ディストリビューション名を指定して完全な./configure出力をコピーして貼り付けると、この答えをわかりやすい答えに拡張できます。

解決策は塩の摂取量を減らすのではなく、水の摂取量を増やすことです。腎臓がうまく機能している場合は、身体が望むものを腎臓が選択すると信じることができます。そうでない場合は、医師の指示に従ってください。

おすすめ記事