cmake — неопределенная ошибка ссылки при использовании dlopen в переполнении стека

Я пытаюсь кросс-компилировать апач-qpid для системы рук от Debian.

Есть undefined reference to __dlopen ошибка, но похоже, что это связано с предыдущим предупреждением:

использование ‘dlopen’ в статически связанных приложениях требует во время выполнения общих библиотек из версии glibc, используемой для компоновки …

Вот деталь:

[ 86%] Linking CXX shared library libqpidcommon.so
CMakeFiles/qpidcommon.dir/qpid/sys/posix/Shlib.cpp.o: In function
`qpid::sys::Shlib::load(char const*)':
/home/mert/qpid-cpp-0.34/src/qpid/sys/posix/Shlib.cpp:32: warning: Using
'dlopen' in statically linked applications requires at runtime the shared
libraries from the glibc version used for linking
/home/mert/IDE/cVEND/00.00.14/bin/../arm-feig-linux-
gnueabi/sysroot/usr/lib/libdl.a(dlopen.o): In function `dlopen':
dlopen.c:(.text+0xc): undefined reference to `__dlopen'

Я не знаю, что именно происходит и как это решить.

Вот есть похожая вещь, я пытался добавить -static -ldl -lc C_FLAGS но не имеет значения.

Любая помощь приветствуется.

РЕДАКТИРОВАТЬ :

РЕДАКТИРОВАТЬ :

Я не уверен, что именно решило проблему, но я думаю, что -ldl искал именно libdl.so, но в директории arm это было libdl-2.19.soТаким образом, вероятно, он тогда искал и находил в другом каталоге. Я связал libdl.so в libdl-2.19.so и теперь он компилируется.

1

Решение

Для компоновщика нужны параметры, а не компилятор. Смотрите LDFLAGS.

https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html

Дополнительные флаги для компиляторов, когда они должны вызывать
компоновщик, «ld», такой как -L. Библиотеки (-lfoo) должны быть добавлены в
Переменная LDLIBS вместо.

1

Другие решения

Если эта ошибка возникает во время шага make, попробуйте сделать

make LIBS=-ldl

И убедитесь, что путь к библиотеке присутствует в LDFLAGS

export LDFLAGS=-L<path/to/ldl>
0

По вопросам рекламы [email protected]