Вопрос по GCC.
От: ursus_a Россия  
Дата: 22.03.12 12:19
Оценка:
Нужно сделать вот что. Под Линухом имеется некоторая программа, которая компилится под GCC с использованием make — исходники на C/C++, заголовки .H. Компилится она в модуль .o, а затем в исполняемый ELF. нужно вставить в некоторые места КАЖДОГО исходного файла вызов некоторой процедуры небольшого объема, но так, чтобы изо всей программы (независимо от того, из какого исходного файла какая ее часть сделана) происходили обращения к одному и тому же куску кода. Для этого используется маленький заголовок и маленький объектник (пробовали любые виды — и .o, и .so, и .a).

Что же делает компилятор? На этапе компиляции всё гладко, а вот на этапе линковки (то есть gcc -o) теряется адрес вызываемой той самой маленькой процедуры. В исходнике заголовок процедуры ЖЕЛАТЕЛЬНО прицепить как #include<...> соответствующий файл заголовка нужно поместить туда, где лежат stdio.h, conio.h и прочие файлы .h, которые (он туда и помещен) прицепляются к тексту как #include<>.

Вопрос: куда при этом надо класть объектный(е) файл(ы) библиотеки?

Пробовал класть туда, где лежит libstd, пробовал класть в отдельную папку и прописывать каталог при компиляции, пробовал класть в текущий каталог. Ни то ни то ни это не помогает. Как правильно.

Программа должна компилиться в исполняемый файл.

И еще одна тонкость: есть ли разница в такой линковке, если программа использует Qt и если не использует?
gcc компиляция elf qt
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.