referência indefinida ao erro 'curl_free'. Não consigo encontrar o que fazer

1

Estou tentando instalar opensn0w , mas recebo erros quando executo o 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

Não consigo encontrar uma solução em nenhum lugar. Eu encontrei respostas que disseram para adicionar -lcurl, então eu tentei make -lcurl , mas isso não funciona. Alguma idéia de como consertar isso?

Estou usando o Linux Mint 17.3. Eu corri apt-get install libcurl4-openssl-dev disse que já está instalado para a versão mais recente.

./ configure output:

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.
    
por Guest01 18.02.2017 / 13:54

1 resposta

0

Você tem que fornecer -lcurl para a ligação do binário. Sua linha de comando make parametrizou o comando make, e não o subcomando de vinculação.

Você precisa verificar os scripts de construção. Verificando a fonte, podemos ver uma fonte antiga usando o autoconf do gnu. Use um

LDFLAGS=-lcurl

prefixo para ./configure para produzir mais makefiles corretos na fase de configuração.

Note que a sua mensagem de erro diz não apenas a libcurl, mas também outras bibliotecas estão faltando (libusb, alguma biblioteca de criptografia, etc).

Nota # 2: Tais problemas são causados na maioria dos casos não pelos flags do linker, mas por que os pacotes de desenvolvimento requeridos não estão disponíveis em seu sistema. É por isso que o ./configure desativa totalmente o curl. Neste caso, instale-os. Em um debian, isso pode ser feito por um

apt-get install libcurl-dev

comando. Em seguida, execute novamente o configure.

Observação # 3: Diga sua distro e copie e cole o resultado inteiro ./configure, isso me possibilitará estender esta resposta para uma resposta fácil.

A solução não é diminuir sua ingestão de sal, mas o aumento da ingestão de água. Se os seus rins estão funcionando bem, você pode confiar neles para selecionar o que seu corpo quer. Se não forem, faça o que seu médico disser.

    
por 18.02.2017 / 14:22