несвязанные библиотеки в файле makefile?

Я пытаюсь установить libspopc, но когда я запускаю make, я получаю следующий вывод:

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

быстрый поиск показал, что это связано с отсоединением libdl, хотя это кажется маловероятным в распределенной библиотеке, особенно, казалось бы, относительно популярной. Что еще может быть причиной? И если это связано с несвязанной библиотекой, как я могу это исправить?

спасибо

8
задан wyatt
06.12.2022 3:13 Количество просмотров материала 2705
Распечатать страницу

2 ответа

вы не explicity просят связать agaist libdl в Makefile. Вы должны попробовать, если добавление вручную разрешает это (если оно добавляется автоматически, это может зависеть от вашего компилятора).

LDFLAGS+=-ldl
3
отвечен Benjamin Bannier 2022-12-07 11:01

вышеуказанный вопрос может быть исправлен, выполнив следующие шаги.

  1. распакуйте этот файл командой tar -xf openssl-1.0.2-latest.tar.gz
  2. export CFLAGS=-fPIC
  3. ./config shared --prefix=/your/path
  4. make
  5. make install
0
отвечен Nuahsad Ahmed 2022-12-07 13:18

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх