Я пытаюсь кросс-компилировать апач-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
и теперь он компилируется.
Для компоновщика нужны параметры, а не компилятор. Смотрите LDFLAGS.
https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html
Дополнительные флаги для компиляторов, когда они должны вызывать
компоновщик, «ld», такой как -L. Библиотеки (-lfoo) должны быть добавлены в
Переменная LDLIBS вместо.
Если эта ошибка возникает во время шага make, попробуйте сделать
make LIBS=-ldl
И убедитесь, что путь к библиотеке присутствует в LDFLAGS
export LDFLAGS=-L<path/to/ldl>