Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

Как узнать, какой файл *.a указывать в командной строке линкёра (компилятор g++)?

08.10.2014, 16:25. Показов 1276. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья!
Сейчас я делаю так. Допустим, линкёр выдаёт ошибку:

Bash
1
undefined reference to `ima_funktsii'
Тогда я запускаю утилиту nm:

Bash
1
nm --defined-only -g ima_faila.a
В цикле натравливаю её на все файлы *.a; в строках ввывода ищу такую строку:
" _ima_funktsii"
В каком файле (предположим, "libfaila.a") такая строка встретится, тот и искомый. Пока проканывало. После чего к командной сроке линкёра добавляю ключ -lfaila

После чего скнова линкую, если снова появляется такаая же ошибка (имя ненайденно функции, понятно, бцудет уже другим), повторяю, пока всё не слинкуется

++++++++++++++++++++++++++++++++++++++++ ++++++=

А вот недавно встретился с таким:
Bash
1
undefined reference to `ima_obekta::ima_funktsii(ima_obekta const&)'
То есть я утилитой nm пробегаюсь по всем файлам *.a, но что в них искать (какую строку? ima_obekta? ima_funktsii? ima_obekta::ima_funktsi?), чтобы найти нужный файл *.a- ума не приложу. Спасибо, кто откликнется. Хотелось бы в ответе минимум угадываний, максимум знаний.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.10.2014, 16:25
Ответы с готовыми решениями:

Как узнать какой процесс какой файл использует?
Здравствуйте, подскажите как можно узнать какой процесс какой файл использует? Преподаватель предложил использовать хуки, но пока не...

Как узнать, какой функции какой файл *.a соответсвует?
Друзья! Работаю с mingw, вот там надо так: если, допустим, вызываешь API- функцию, то надо подключать соответствующую библиотеку (?),...

Как узнать ссылка это или файл из командной строки
Что такое символическая, жёсткая и т.д. ссылка объяснять не надо, как создаётся, какими утилитами, тоже в инете много инфы... но не могу...

6
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
08.10.2014, 16:45
kravam,
Bash
1
nm --defined-only -g --demangle file_name.a | grep ima_obekta::ima_funktsii
а можно и просто ima_funktsii.
1
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
08.10.2014, 16:50  [ТС]
Извините, я не сказал, у меня windows, в mingw нет исполняемого файлв grep.exe
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
08.10.2014, 16:51
kravam, Ну без grep.) Как ты ищешь в выданном не суть важно.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
08.10.2014, 20:45  [ТС]
Вот у меня файл такой:
C++
1
2
3
4
5
//main.cpp
#include <hider.h>
int main
{
}
Где hider.h - хидер одной из библиотек. Вот чтобы всё это дело скомпилилось, понадобилось 10(!) файлов *.a. Но это ладно. Но вот ПОИСК этих файлов задача та ещё. По одному я их раньше искал без проблем, а тут 10. Занимает, знаете ли некоторое время. То есть надо эту задачу автоматизировать. В принципе, задача интересная и я бы, наверное, справился, написав программу, работающую примерно так:

C++
1
programma.exe main.exe <путь_к_библиотекам_и_инклудам>
После чего на гора выдалась бы командная строка которую я щас искал полувручную (всё-таки nm у меня по всем папкам с *.a пробегается рекурсивно)

Вопрос в другом- неужели никто до меня этого не делал? А почему я делаю такой вывод- дело в том, что я пихаю этот код в IDE и пробую компилить/перестраивать всё. И вот такие ошибки линкёра вываливаются (так же, как и если компилить в консоли.). Но дело в том, что IDE писали умные ребята. И они знали, для чего нужна та или иная утилита в папке bin (все эти as.exe и прочая.) И ни одну из них не задействовали- сиди, kravam, ищи библиотеки сам.

Значит, такой утилиты в mingw просто нет, которая по экзешнику сама бы определяла все библиотеки и пути, где их искать?
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
08.10.2014, 21:14
kravam, grep есть в поставке MSYS для windows.
Т.к. mingw - это софт из мира unix, а идеология unix гласит, что "программа должна решать только одну задачу и делать это хорошо", то вариант с
Цитата Сообщение от ForEveR Посмотреть сообщение
nm --defined-only -g --demangle file_name.a | grep ima_obekta::ima_funktsii
является с этой точки зрения наиболее оптимальным. nm ищет имена, grep фильтрует. Если нужна автоматизация - пишем скрипт.

Лично я всегда именно так и ищу:
Bash
1
find <путь> -name "*.a" | xargs nm -A --defined-only -g --demangle | grep <имя>
Загнать это в скрипт совсем нетрудно.

Ни разу не слышал про графические средства. Хотя в составе IDE такой поиск возможно был бы полезен.
Тем лучше для тебя, в наше время сложно найти нишу, которая еще не занималась - реализуй сам .
За плагин к какому-нибудь Code::Blocks или Eclipse c подобной функциональностью тебе только спасибо скажут, на собеседованиях будешь ссылку давать на проект .
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
08.10.2014, 21:22  [ТС]
Ещё надо будет после нахождения каждого очередного нахождения *.a файла опять собирать экзешник. Ибо дни функции исчезают из числа неопознанных, появляются другие.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.10.2014, 21:22
Помогаю со студенческими работами здесь

Как запустить файл haskell в командной строке windows 10?
помогите пожалуйста разобраться: на лекции дали такой вариант: ./myfile.hs но windows выдает ошибку видимо у преподавателя другая...

Как узнать на какой строке заканчивается программа?
Всем здрастье, я начинающий так сказать программист и для практики решил написать мини-игру угадай число с этаким &quot;декором&quot; в...

Как узнать в какой строке в данный момент выполняется приложение?
Visual Studio 2015, c#. Собрал решение, получил exe, пользуюсь им (запуская через проводник). В какой то момент приложение загружает...

[WPF] Как узнать в какой строке DataGrid был клик по кнопке?
Есть DataGrid, в нем есть столбец с кнопкой : &lt;DataGridTemplateColumn Width=&quot;*&quot; Header=&quot;Действие&quot; CanUserSort=&quot;False&quot; &gt; ...

Как узнать, какой процесс блокирует файл?
Перед открытием файла необходимо проверить его &quot;занятость&quot;. Если таковая имеется, то CreateFile выдаст &quot;-1&quot;. Вопрос: как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru