_>>Нужно сделать вот что. Под Линухом имеется некоторая программа, которая компилится под GCC с использованием make — исходники на C/C++, заголовки .H. Компилится она в модуль .o, а затем в исполняемый ELF. нужно вставить в некоторые места КАЖДОГО исходного файла
Z>т.е. куча .c/cpp/cc файлов компилится в один (!) объектник?
uu> нет, объектников тоже несколько, а исполняемый файл один.
_>> вызов некоторой процедуры небольшого объема, но так, чтобы изо всей программы (независимо от того, из какого исходного файла какая ее часть сделана) происходили обращения к одному и тому же куску кода. Для этого используется маленький заголовок и маленький объектник (пробовали любые виды — и .o, и .so, и .a).
Z>маленький заголовок в студию! а какой еще "объектник"?? исходников процедуры небольшого объема нету чтоли???
uu>
extern char * LabSensor3(char *SS, unsigned int ids, unsigned int idp);
#endif
_>>Что же делает компилятор? На этапе компиляции всё гладко, а вот на этапе линковки (то есть gcc -o) теряется адрес вызываемой той самой маленькой процедуры. В исходнике заголовок процедуры ЖЕЛАТЕЛЬНО прицепить как #include<...> соответствующий файл заголовка нужно поместить туда, где лежат stdio.h, conio.h и прочие файлы .h, которые (он туда и помещен) прицепляются к тексту как #include<>. Z>добавь путь к маленькому заголовку в -I
uu> пробовал. сейчас еще попробую тупо привязать к проекту хэдер и саму библиотеку.
_>>Вопрос: куда при этом надо класть объектный(е) файл(ы) библиотеки? Z>баз разницы. путь всегда можно указать при линковке -L например или явно указывая маленький объектник (с полным путем)
_>>Пробовал класть туда, где лежит libstd, пробовал класть в отдельную папку и прописывать каталог при компиляции, пробовал класть в текущий каталог. Ни то ни то ни это не помогает. Как правильно.
Z>так вот точно НЕ ПРАВИЛЬНО -- файлы своего проекта не нужно класть к системным (установленным package managerом)
uu> почему? что не так? Если не правильно только стилистически, а в принципе работать будет — значит (в данном случае) прокатит, поскольку условия совсем стендовые и пойдут любые, даже очень некрасивые варианты.
_>>Программа должна компилиться в исполняемый файл.
_>>И еще одна тонкость: есть ли разница в такой линковке, если программа использует Qt и если не использует?
Z>нет. с какого перепуга?
uu> просто в мейке есть директивы около gcc, которые указывают на то, что используется Qt. Поэтому и спросил. Нет — и слава Богу.