unlinked libraries em um makefile?

1

Estou tentando instalar uma libspopc, mas quando executo o make, recebo a seguinte saída:

cc -Wall -Wextra -pedantic -pipe -fPIC -Os -DUSE_SSL -c session.c
cc -Wall -Wextra -pedantic -pipe -fPIC -Os -DUSE_SSL -c queries.c
cc -Wall -Wextra -pedantic -pipe -fPIC -Os -DUSE_SSL -c parsing.c
cc -Wall -Wextra -pedantic -pipe -fPIC -Os -DUSE_SSL -c format.c
cc -Wall -Wextra -pedantic -pipe -fPIC -Os -DUSE_SSL -c objects.c
cc -Wall -Wextra -pedantic -pipe -fPIC -Os -DUSE_SSL -c libspopc.c
rm -f libspopc*.a
ar r libspopc-0.9n.a session.o queries.o parsing.o format.o objects.o libspopc.o
ar: creating libspopc-0.9n.a
ranlib libspopc-0.9n.a
ln -s libspopc-0.9n.a libspopc.a
rm -f libspopc*.so
cc -o libspopc-0.9n.so -shared session.o queries.o parsing.o format.o objects.o libspopc.o
ln -s libspopc-0.9n.so libspopc.so
cc -o poptest1 -Wall -Wextra -pedantic -pipe -fPIC -Os -DUSE_SSL examples/poptest1.c -L. -lspopc -lssl -lcrypto
/usr/local/lib/libcrypto.a(dso_dlfcn.o): In function 'dlfcn_globallookup':
dso_dlfcn.c:(.text+0x2d): undefined reference to 'dlopen'
dso_dlfcn.c:(.text+0x43): undefined reference to 'dlsym'
dso_dlfcn.c:(.text+0x4d): undefined reference to 'dlclose'
/usr/local/lib/libcrypto.a(dso_dlfcn.o): In function 'dlfcn_pathbyaddr':
dso_dlfcn.c:(.text+0x8f): undefined reference to 'dladdr'
dso_dlfcn.c:(.text+0xe9): undefined reference to 'dlerror'
/usr/local/lib/libcrypto.a(dso_dlfcn.o): In function 'dlfcn_bind_func':
dso_dlfcn.c:(.text+0x491): undefined reference to 'dlsym'
dso_dlfcn.c:(.text+0x570): undefined reference to 'dlerror'
/usr/local/lib/libcrypto.a(dso_dlfcn.o): In function 'dlfcn_bind_var':
dso_dlfcn.c:(.text+0x5f1): undefined reference to 'dlsym'
dso_dlfcn.c:(.text+0x6d0): undefined reference to 'dlerror'
/usr/local/lib/libcrypto.a(dso_dlfcn.o): In function 'dlfcn_unload':
dso_dlfcn.c:(.text+0x735): undefined reference to 'dlclose'
/usr/local/lib/libcrypto.a(dso_dlfcn.o): In function 'dlfcn_load':
dso_dlfcn.c:(.text+0x817): undefined reference to 'dlopen'
dso_dlfcn.c:(.text+0x88e): undefined reference to 'dlclose'
dso_dlfcn.c:(.text+0x8d5): undefined reference to 'dlerror'
collect2: ld returned 1 exit status
make: *** [poptest1] Error 1

Uma pesquisa rápida sugeriu que isso se devia ao fato de a libdl estar desvinculada, embora isso pareça improvável em uma biblioteca distribuída, particularmente uma biblioteca aparentemente relativamente popular. Alguma outra coisa poderia estar causando isso? E se é devido a uma biblioteca desvinculada, como eu iria consertá-la?

Obrigado

    
por wyatt 10.05.2010 / 22:06

2 respostas

3

Você não pede explicitamente para vincular agaist libdl no Makefile. Você deve tentar se adicionar manualmente resolve isso (se for adicionado automaticamente pode depender do seu compilador).

LDFLAGS+=-ldl
    
por 10.05.2010 / 22:19
0

O problema acima pode ser corrigido seguindo as etapas abaixo.

  1. Descompacte este arquivo usando o comando tar -xf openssl-1.0.2-latest.tar.gz
  2. export CFLAGS=-fPIC
  3. ./config shared --prefix=/your/path
  4. make
  5. make install
por 27.10.2016 / 14:50