КИТА unofficial

Компьютерный => Программирование => Тема начата: Магнетон Бора от Март 21, 2011, 04:57:24



Название: Проблема с кодингом на линуксе
Отправлено: Магнетон Бора от Март 21, 2011, 04:57:24
Всем доброго времени суток.

Разбираюсь  тут вот я с графическими файлами формата TIFF и GEOTIFF. Скачал библиотеки с API для работы с такими файлами с официальных сайтов.

http://trac.osgeo.org/geotiff/ (http://trac.osgeo.org/geotiff/) - тут все что касается спецификаций, мануалов и библиотеки для работы с GEOTIFF
http://www.libtiff.org/ (http://www.libtiff.org/) - тут все что касается работы с форматом TIFF

Использую я ОС Ubuntu 10.10 и среду разработки code blocks. Сталкнулся вот с такой проблемой... Я распоковал библиотеки, которые мне нужны (тут все стандартно)

Код:
...
./configure
make
make install
...

Они вроде бы встали и никаких проблем. Пишу обычный пример, который приводится в мануале по libgeotiff

Код:
#include <iostream>
#include "geotiffio.h" /* for GeoTIFF */
#include "xtiffio.h"  /* for TIFF */
using namespace std;
int main(void)
{
    GTIF *gtif=(GTIF*)0; /* GeoKey-level descriptor */
    TIFF *tif=(TIFF*)0;  /* TIFF-level descriptor */
    tif=XTIFFOpen("b80.TIF","w");

    if (tif!=NULL) {
        cout<<"success"<<endl;
    }
        else {
            cout<<"epic fail"<<endl;
        }
    XTIFFClose(tif);
    return 0;
}

При компиляции и сборке вроде бы все нормально, никаких ошибок. Но при запуске выдаются вот такие вот сообщения:

obj/Debug/main.o||In function `main':|
/home/acer/appl/main.cpp|11|undefined reference to `XTIFFOpen'|
/home/acer/appl/main.cpp|18|undefined reference to `XTIFFClose'|
||=== Build finished: 2 errors, 0 warnings ===|

На сколько я понимаю тут проблема в том, что на этапе сборки программы не находятся библиотеки для функций XTIFFOpen и XTIFFClose. Но они же вроде стоят  ???

В гугле порылся, стоящего ответа не нашел. Может кто-то сталкивался с чем-то подобным?


Название: Re: Проблема с кодингом на линуксе
Отправлено: Магнетон Бора от Март 21, 2011, 06:19:29
Ну же, не стесняемся - подсказываем.


Название: Re: Проблема с кодингом на линуксе
Отправлено: Alder от Март 21, 2011, 07:40:21
Магнетон Бора, в настройках среды разработки какие параметры компиляция? Пути прописаны?


Название: Re: Проблема с кодингом на линуксе
Отправлено: Магнетон Бора от Март 21, 2011, 07:55:14
В разделе Global compiler settings стоят следующие опции:

Produce debugging symbols [-g]
Enable all compiler warnings (overrides mane other settings) [-Wall]

Компилятор GNU GCC Compiler.

ммм которые пути?

З.Ы. На линукс перешел недавно, так что просьба не пинать если вопросы будут ламерские =)


Название: Re: Проблема с кодингом на линуксе
Отправлено: LazarusLong от Март 21, 2011, 08:09:39
тебе, скорее всего, нужно прописать команду запуска компилятора, в которой будут явно указаны пути к библиотекам, которые ты используешь, что-то типа такого:

gcc -c -I/usr/local/include/libxml2

это должно быть где-то в настройках, не знаю, что у тбея за IDE, в Eclipse это делается в свойствах проекта - С/С++ Options -> Discovery Options -> Compiler Invocation Command


Название: Re: Проблема с кодингом на линуксе
Отправлено: Магнетон Бора от Март 21, 2011, 09:12:32
gcc -c -I/usr/local/include/libxml2

Сейчас попробую поискать где это можно вбить...


Название: Re: Проблема с кодингом на линуксе
Отправлено: LazarusLong от Март 21, 2011, 10:49:20
Сейчас попробую поискать где это можно вбить...
Вбивать нужно, разумеется, не именно эту строку, а с подключением тех библиотек, которые нужны тебе.


Название: Re: Проблема с кодингом на линуксе
Отправлено: EvilMax от Март 22, 2011, 12:55:45
Заголовков одних мало. Заголовочные файлы позволяют компилятору распознавать вызовы функций, имена переменных и т.п. Однако, потом каждый вызов должен быть связан с функцией. Вывод: не указаны библиотеки при компиляции. Варианты такие:

а) Библиотека разделяемая и установлена в систему. Достаточно -lимя. Например, в случае с libz.so: gcc myfun.c -lz
б) Библиотека статическая и установлена в "куда-то". gcc -Lпуть_к_нашей_либе  mylib.a
(Отправлено в: Март 22, 2011, 11:54:03 )
 Если используется IDE и система сборки, должны указываться в свойствах проекта. Если консоль - то руцями параметры. Если сам сделал makefile или CmakeLists.txt - там есть директивы. Тут читай маны по среде, которую используешь.


Название: Re: Проблема с кодингом на линуксе
Отправлено: Магнетон Бора от Март 23, 2011, 11:29:31
Спасибо  :)

Проблема успешно решена в реале  :) код написан, отдебаган и сдан в эксплуатацию  :)