Qt Creator и libc6
От: asciiz  
Дата: 28.05.19 15:26
Оценка:
Здравствуйте! Подскажите, пожалуйста, как из своего исходника перескочить на определение функции из libc6? Перескакивает только на объявление в .h файле, и всё.

Поставил, как советовал гугль:

$ su —
# cd /usr/local/src
# apt-get source libc6

Каталог появился, но как его подцепить в QtCreator?
Re: Qt Creator и libc6
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 29.05.19 01:28
Оценка:
Здравствуйте, 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++ это отдельный случай.
Отредактировано 29.05.2019 1:52 velkin . Предыдущая версия . Еще …
Отредактировано 29.05.2019 1:39 velkin . Предыдущая версия .
Re: Qt Creator и libc6
От: Chorkov Россия  
Дата: 30.05.19 08:13
Оценка:
Здравствуйте, asciiz, Вы писали:

A>Здравствуйте! Подскажите, пожалуйста, как из своего исходника перескочить на определение функции из libc6? Перескакивает только на объявление в .h файле, и всё.


A>Поставил, как советовал гугль:


A>$ su -

A># cd /usr/local/src
A># apt-get source libc6

A>Каталог появился, но как его подцепить в QtCreator?


Отладчик не знает, что этот код в этом .so соответствует вот этому исходнику... Т.е. нужна еще отладочная информация.
Неплохо бы, чтобы libc6 был собран без оптимизации, но это возможно, только если вы соберете его руками из исходника, как советует velkin.

Если лениво собрать пакет самому, то можно загрузить отладочную информацию из пакета libc6-dbg.
(Имя пакета в разных линуксах может отличаться, например libc6-debuginfo, libc6-debug ... . Гуглить "libc debug info <<имя вашего дистрибутива линукса>>". )
Re: Qt Creator и libc6
От: alpha21264 СССР  
Дата: 30.05.19 11:32
Оценка:
Здравствуйте, 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&amp;dist=94&amp;size=1121144&amp;name=glibc-devel-2.17-260.el7_6.4.x86_64.rpm

А тебе нужно что-то типа такого:

apt-get libc6-dev

Или такого:

apt-get libc6-devel

А у тебя сейчас просто нескомпилированные исходники.

Течёт вода Кубань-реки куда велят большевики.
Re: Qt Creator и libc6
От: asciiz  
Дата: 05.06.19 20:13
Оценка:
Большое спасибо за подсказки! В итоге смог решить проблему, хоть и каким-то кривым способом.



Прописал дополнительные параметры запуска GDB, правда приходится для каждого .c файла свой каталог указывать, не получается один для всех указать.

Сам переход к исходному тексту libc-шной функции при этом не работает (если просто ПКМ->Переключить объявление/реализацию), но при отладке нужный .c файл открывает и без проблем по нему шагает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.