Сборка под Linux, си

Рейтинг: 1Ответов: 1Опубликовано: 06.05.2015

В чем суть, есть сырцы программы, и в них мне нужно вставить свой код Рассмотрю на простом примере

  1. Беру программу (к примеру Postgis)

  2. вставляю в Postgis свою функцию, а именно хедер и функцию __memset_probe(newpoints, size).

    // Код программы Postgis
    #include <VulLib/vullib.h>// подключаю свою библиотеку
    
    //...
    {__memset_probe(newpoints, size); memset(newpoints, 0, size);}
    //...
    
  3. кладу свою папу VulLib с хедером и сишником сюда - /usr/include/VulLib

    vullib.c

    #include "vullib.h"
    void *__memset_probe(void *s, size_t count)
    {
    // делает что то, например выводит сообщение в опр. файл    
    return s;
    }
    

    vullib.h

    #ifndef __VULLIB__
    #define __VULLIB__
    
    #include <stdio.h>
    void *__memset_probe(void *, size_t);
    #endif /* __VULLIB__ */
    
  4. Собираю программу (Postgis)

    ./configure 
    make
    

но выдает следующую ошибку:

more undefined references to `__memset_probe' follow
collect2: ld returned 1 exit status

Подскажи те что делать, вроде бы там нужно в makefile указать что еще нужно, но для меня это все темный лес распишите подробней.

Ответы

▲ 1

Судя по выводу, не скомпилировался vullib.c попробуйте добавить vullib.c в директорию с исходниками Postgis и опять запустить configure и make

Update
Make файл генерится после того как вы запускаете configure. Если нужно добавить не большое кол-во .c файлов и это будет однократно, то после запуска configure можно поправить сгенеренный Make файл. Найдите, где в Postgis лежит Makefile, и найдите в тексте, где добавлены .c файлы, добавьте ваши файлы по аналогии, далее запустите make.
Если более постоянное решение, то нужно править configure.ac