Здравствуйте! Подскажите, пожалуйста, как из своего исходника перескочить на определение функции из libc6? Перескакивает только на объявление в .h файле, и всё.
Поставил, как советовал гугль:
$ su —
# cd /usr/local/src
# apt-get source libc6
Каталог появился, но как его подцепить в QtCreator?
Здравствуйте, asciiz, Вы писали:
A>Здравствуйте! Подскажите, пожалуйста, как из своего исходника перескочить на определение функции из libc6? Перескакивает только на объявление в .h файле, и всё.
A>$ su -
A># cd /usr/local/src
A># apt-get source libc6
При массовой установке независимых библиотек можно ещё создавать подпапки в /usr/local/src, например, вот так:
su
cd /usr/local/src/libc6
apt source libc6
Хотя это всего лишь информация к размышлению и никак на работоспособности не отразится.
A>Каталог появился, но как его подцепить в QtCreator?
Дальше нужно скомпилировать и установить библиотеку. Инструкции обычно лежат в папках с исходниками. Это может выглядеть как-то так:
./configure
make -j9
make install
или иначе, то есть я сейчас не побегу смотреть как это делается с libc6.
Опция -j9 это "количество логических ядер процессора + 1", чтобы быстрее компилировалось, то есть если 4 физических и 8 логических ядер как у меня, то получаем -j9. Некоторые советуют собирать пакет, чтобы не мусорить, тот же deb в дебиане. А вообще система сборки может быть разной, например, cmake и так далее. Ещё раз повторю, инструкции по сборке находятся прямо в папке, если что-то не получилось, то можно воспользоваться интернет поиском и понять причину неудачи.
Теперь, что касается подключения к Qt. Предположительно make install или установка пакета прошли успешно. Подключение происходит в pro файле, с которым на самом деле работает утилита qmake, а Qt Creator это только посредник. То есть, можно было бы скомпилировать проект из консоли:
qmake project.pro
make -j9
Если библиотека "-dev" установлена из репозитория, например, пакет libcrypto++-dev, тогда подключаем её вот так:
# library crypto++
LIBS += -lcryptopp
Ещё мы могли бы указать путь к заголовочным файлам:
# library poppler
INCLUDEPATH += -I/usr/include/poppler/qt4
LIBS += -L/usr/lib -lpoppler-qt4
И наконец подключение из установленных исходников:
# library opencv
INCLUDEPATH += -I/usr/local/include/opencv
LIBS += -L"/usr/local/lib" -lopencv_core -lopencv_imgproc -lopencv_highgui
Для справки по qmake см.
qmake 4.x,
qmake 5.x. Дальше просто добавляем в C++ файлы #include <...>, путь должен быть относительно INCLUDEPATH и работаем как обычно, но это что касается линковки. Но здесь в любом случае скорее всего нужно копать в сторону qmake. Надо в общем проводить опыты, тогда можно сказать с гарантией какой способ сработает, но мне сейчас лень.
P.S. вот ещё идея, можно попробовать скомпилировать какую-либо библиотеку и указать пути прямо к папке со скомпилированным. Причём в некоторых проектах в инструкции написано создать подпапку вроде build и так далее, так вот надо компилировать без неё, чтобы исходник перемешался с компиляцией. А потом подключиться к этому делу, как указал выше. Проверять я это конечно не буду, во всяком случае пока, тем более шаблоны C++ это отдельный случай.
Здравствуйте, asciiz, Вы писали:
A>Здравствуйте! Подскажите, пожалуйста, как из своего исходника перескочить на определение функции из libc6? Перескакивает только на объявление в .h файле, и всё.
A>Поставил, как советовал гугль:
A>$ su -
A># cd /usr/local/src
A># apt-get source libc6
A>Каталог появился, но как его подцепить в QtCreator?
Эээ... У меня в RedHat для этого нужно поставить девелоперскую версию.
Вот такую:
http://rpm.pbone.net/index.php3?stat=26&dist=94&size=1121144&name=glibc-devel-2.17-260.el7_6.4.x86_64.rpm
А тебе нужно что-то типа такого:
apt-get libc6-dev
Или такого:
apt-get libc6-devel
А у тебя сейчас просто нескомпилированные исходники.
Большое спасибо за подсказки! В итоге смог решить проблему, хоть и каким-то кривым способом.
Прописал дополнительные параметры запуска GDB, правда приходится для каждого .c файла свой каталог указывать, не получается один для всех указать.
Сам переход к исходному тексту libc-шной функции при этом не работает (если просто ПКМ->Переключить объявление/реализацию), но при отладке нужный .c файл открывает и без проблем по нему шагает.