Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: clovenhoof в Jul 28, 2010, 13:17



Титла: C Runtime library инсталация
Публикувано от: clovenhoof в Jul 28, 2010, 13:17
Снощи стоях до късно и така и не успях да компилирам един анг-бг речник (апликейшън).
Дава грешка че няма инсталирани X11 библиотеки и С функцията getenv() която е в stdlib.h не я разпознава.
Последното е явно липса и на CRT библиотеките и хедърите.
Въпроса ми е как да инсталирам тези библиотеки?

Сложих IDE-то на Qt с идеята че ще си инсталира CRT библиотеките, ама пак ми дава че не разпознава getenv().


Титла: Re: C Runtime library инсталация
Публикувано от: bop_bop_mara в Jul 28, 2010, 13:30
Речника в някакво readme или подобно може да има описани нужните за него библиотеки за по-лесно. Но дори и да го няма този списък, компилираш, то ти плюе грешка за липсваща библиотека, инсталираш нейния dev пакет (това са точно хедърите й) и пробваш пак да компилираш и т.н.


Титла: Re: C Runtime library инсталация
Публикувано от: task_struct в Jul 28, 2010, 13:40
Здравей,

Имаш ли инсталиран build-essential пакета? Той би трябвало да ти предостави хедърите за стандартната С библиотека. Ако приложението е писано на Qt, инсталирай си неговите dev пакети. Като зависимост те ще инсталират и X11 пакетите :) Може ли все пак да дадеш какво ти изписва? Така ще ни е по-лесно да предложим решение :)


Титла: Re: C Runtime library инсталация
Публикувано от: clovenhoof в Jul 28, 2010, 13:47
Междудругото речника не ме притеснява.
Притеснява ме че нямам необходимите библиотеки за компилиране.
В readme-то няма описани библиотеките.
За X11 server просто ми казва че нямам необходимите библиотеки и спира.
За getenv() казва че не я разпознава - пак не дава коя библиотека точно да инсталирам.

Сложих Ubuntu уж за по-голямо удобство и наистина разпозна и конфигурира хардуера сам.
За обикновен потребител има всичко необходимо, но за компилиране и девелопмент ми е объркано.

Преди бях опитвал със SUSE. Там беше по трудно всичко, но в крайна сметка ставаше.
Там помня че наистина ми казваше какво точно липсва. Макар че нама логика защото компайл системата от тулчета
би трябвало да е почти същата, макар и доста различна дистрибуция.

Също така ми е трудно да се ориентирам от името на библиотеката за dev пакета.


Титла: Re: C Runtime library инсталация
Публикувано от: clovenhoof в Jul 28, 2010, 13:51
Здравей

В момента съм на работа и съм на Windows.
build-essential ще го проверя вкъщи довечера и пак ще пиша.

мерси.


Титла: Re: C Runtime library инсталация
Публикувано от: n00b в Jul 28, 2010, 13:53
Съмнява ме че си пропуснал пакети за разработчици. Нещо като x11-dev.


Титла: Re: C Runtime library инсталация
Публикувано от: clovenhoof в Jul 28, 2010, 20:07
Нещата донякъде се оправиха, но още не мога да билдна този речник: kbgoffice-1.8.

X11 библиотеките вече са налични, но още ми дава следната грешка при компайл:

Цитат
Good news! Look that you have all needed packages installed
Type 'make' (or 'gmake') to compile the program
After that type 'make install' to install the program and data
For 'make install' you must be root (su)
At the end in a X terminal window type 'kbgoffice' to run the program

stefan@ubuntu:~/Downloads/kbgoffice-1.8$ make
Making all in src
make[1]: Entering directory `/home/stefan/Downloads/kbgoffice-1.8/src'
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"bgoffice\" -DVERSION=\"1.8\" -DSTDC_HEADERS=1  -I. -I.  -I/usr/include/qt3   -Wall  -O2 -c main.cpp
main.cpp: In function ‘int main(int, char**)’:
main.cpp:64: error: ‘getenv’ was not declared in this scope
make[1]: *** [main.o] Error 1
make[1]: Leaving directory `/home/stefan/Downloads/kbgoffice-1.8/src'
make: *** [all-recursive] Error 1

Мисля, че има грешка в сорса, защото щеше да каже, че не може да намери stdlib.h в който е декларирана getenv().
Някой от вас компилирал ли е този речник (по-точно тази версия)?


Титла: Re: C Runtime library инсталация
Публикувано от: borovaka в Jul 28, 2010, 22:54
kbgoffice е доста стар проект и беше за qt3, не знам дали има нова версия (много ме съмнява да има). Друг проблем е, че сменяха синтаксиса на някой функции на gcc от версия 3 до версия 4 и се омазаха още повече нещата.
Ако искаш речник има нов spellbook ползва същия речник на kbgoffice но е писан на java в сайта можеш да откриеш линк за свалянето.


Титла: Re: C Runtime library инсталация
Публикувано от: gat3way в Jul 29, 2010, 12:12
Чудно какво ли ще стане ако замениш в main.cpp където има getenv(..) с std::getenv(...)


Титла: Re: C Runtime library инсталация
Публикувано от: clovenhoof в Jul 29, 2010, 13:33
Грешка!

getenv() е от CRT и я няма в STL.


Титла: Re: C Runtime library инсталация
Публикувано от: v_badev в Jul 29, 2010, 18:04
clovenhoof, std:: не е запазена територия на STL. Например string не е част от STL, но никой нормален компилатор няма да те пусне да го използваш без std:: отпред или без изрично включване на namespace-a. И std::getenv е напълно коректно ако инклудваш стандартната C библиотека с #include <cstdlib>.

А по темата - вместо да се мъчиш да компилираш kbgoffice си инсталирай gbgoffice с apt-get или от synaptic.


Титла: Re: C Runtime library инсталация
Публикувано от: clovenhoof в Jul 29, 2010, 22:56
Цитат
И std::getenv е напълно коректно ако инклудваш стандартната C библиотека с #include <cstdlib>.

1. Тук си прав, макар че <cstdlib> идва с STL и не е част от CRT.
Но защо да слагам std:: отпред, ако човека писал речника е вкючил stdlib.h?

#include <cstdlib>   ->  std::getenv(...)   (С++)
#include <stdlib.h>  ->  getenv(...)          (С)

Едва ли той не знае горното.

2. string е typedef  на basic_string<...> от STL и е в std пространството.

3. Мерси за речника :)


Титла: Re: C Runtime library инсталация
Публикувано от: gat3way в Jul 29, 2010, 23:18
Аз не видях със сигурност да се твърди че е инклуднат stdlib.h, пише единствено че е функцията е декларирана във въпросният хедър.