ld не может найти библиотеку curl при запуске make file - PullRequest
0 голосов
/ 10 мая 2018

При компиляции с использованием переданного мне файла make я обнаружил следующую ошибку:

/bin/ld: cannot find -lcurl
collect2: error: ld returned 1 exit status
make[1]: *** [dis.exe] Error 1
make[1]: Leaving directory 'intg_builds/Test2'

Насколько я понимаю, компоновщику не удалось найти файл curl при компоновке. При поиске в файловой системе я нашел curl в / usr / bin / и символическую ссылку на него в / bin /. Curl был даже в том же каталоге, что и ld.

Вот код из файла make, где он ссылался на curl:

EXTRALIBS= /usr/local/lib/libxerces-c.a -lcurl 

Операционная система - Centos 7, 64-разрядная.

Curl - это версия 7.29.0 (x86_64-redhat-linux-gnu) libcur / 7.29.0 NSS / 3.28.4 zlib / 1.2.7 libidn / 1.28 libssh2 / 1.4.3

Xerces-c - версия 3.1.1

Где у меня должна быть символическая ссылка на curl, чтобы компоновщик нашел ее правильно?

Пожалуйста, обратите внимание: мне не рекомендуется изменять файлы make на данный момент. Для моих целей было бы лучше, если бы мы могли воспроизвести среду, для которой был создан этот файл make.

Дополнительная информация: В / usr / lib64 / есть 2 файла libcurl.so. Одним из них является "libcurl.so.4", а другим - "libcurl.so.4.3.0"

Обновление: После предложения установить libcurl-devel ошибки изменились. Теперь я получаю сотни неопределенных ошибок ссылок в одном пакете. Примеры следующие:

/home/~/Downloads/git/Foo/Build_Tools/HLA/trunk/xerces-c/xerces-c-3.1.1/src/./sercesc/util/RefHashTableOf.c:415: undefined reference to 'operator delete(void*, unsigned long)'
/usr/local/lib/libxerces-c.a(IGXMLScanner2.o):/home/~/Downloads/git/Foo/Build_Tools/HLA/trunk/xerces-c/xerces-c-3.1.1/src/./xercesc/util/RefHashTableOf.c:223: more undefined references to 'operator delete(void*, unsigned long)' follow

Кажется, они ссылаются либо на удаление, либо на uset_<Bar>_50, которые выглядят как свойства или глобальные переменные, функции транскодера и переменные и тому подобное. Такое ощущение, что он пытается подключиться не к той библиотеке.

1 Ответ

0 голосов
/ 10 мая 2018

/ bin / ld: не удается найти -lcurl

-lcurl означает «libcurl. , поэтому », и вы получите только время выполнения lib libcurl.so.4 -> libcurl.so.4.3.0

# yum install libcurl-devel: предоставляет файлы для создания приложений с помощью curl

/usr/bin/curl-config, /usr/include/curl/{headers.h}, /usr/lib64/libcurl.so, /usr/lib64/pkgconfig/libcurl.pc

...