Войти

Показать полную графическую версию : Программирование в Линукс


Страниц : [1] 2

Nigon
07-04-2003, 23:56
Программеры, это наверное совсем уж детский вопрос.
Написал обыкновенную программу с применением iostream.h. Начинаю компелировать и выдает :

/tmp/ccLAYbhV.o: In function `main':
/tmp/ccLAYbhV.o(.text+0xf): undefined reference to `cout'
/tmp/ccLAYbhV.o(.text+0x14): undefined reference to `ostream::operator<<(char const *)'
collect2: ld returned 1 exit status

Вот - подскажите, что у меня не установленно и где его взять (если можно, пожалуйста, ссылкой)

P.S. Я установил все rpm из моего ASPLinux7.3 что хоть както было связано с C или C++, включая KDevelop 2.1.2

Добавлено:

поправка ":o " - ":  o"

netmax
08-04-2003, 14:52
Вот буквально сегодня 15 минут грохнул на туже проблему.
Фишка в том что описание этих методов находятся не в библиотеке libc.o а в другой, и нужно явно указать какую библиотеку подключить.
Точно не помню но помоему библиотека называется так
libstdc++-3~2-2.10.0.o лежит она в /usr/lib

Добавлено:

Вот буквально сегодня 15 минут грохнул на туже проблему.
Фишка в том что описание этих методов находятся не в библиотеке libc.o а в другой, и нужно явно указать какую библиотеку подключить.
Точно не помню но помоему библиотека называется так
libstdc++-3~2-2.10.0.o лежит она в /usr/lib

glassMonk
09-04-2003, 08:27
Я взял и препил только что.
#include <istream.h>
тоже самое, сегодня посмотрю днем что получится обязательно напишу.

Nigon
09-04-2003, 19:44
VBMUSTDIE
Я только начинаю программировать, по этому мне ниочень понятно - как это "указать" и "подключить" (покажите пожалуйста пример).
glassMonk
Только я подключал iOstream.h, хотя может нету разницы ? :biglaugh:
Жду !!!

ruslandh
10-04-2003, 03:44
Nigon
Установите
libstdc++2.96-devel
или
libstdc++3.2-devel
(в зависимости от Вашего gcc).

glassMonk
10-04-2003, 05:54
Nigon
У тебя получилось?

Nigon
10-04-2003, 19:43
glassMonk
Да, но динамическую библиотекую я подключал после того как собрал обьектный файл.:biglaugh: А потом компиляция.
А вот так чтоб подключять эту библиотеку в исходном коду - не получилось:(


Добавлено:

ruslandh
Они у меня уже стоят и я их сейчас переставил заново с заменой чего тока можна.
Результат такойже - пишет ошибку если подключать в исходном коду !!!
(Я имею введу метод - #include <iostream.h>)

Dimon
10-04-2003, 23:46
Nigon
Можешь выложить текст программы?

glassMonk
11-04-2003, 02:13
#include <iostream.h>
int main()
{
   cout<<"Васька\n";
   return 0;
}

ruslandh
11-04-2003, 08:23
1 А где у Вас лежит iostream.h ?
(можно конечно в include и полный путь задать, а можно и транслятору сказать)
2 Чем вы пользуетесь при компиляции ?

netmax
11-04-2003, 12:56
Nigon
Пусть файл называется 1.cpp
Тогда в коммандной строке пишешь
gcc -c 1.cpp
должен появиться файл 1.o
далее
gcc -o 1 1.o -lstdc++
если все правильно то должен появиться запускной файл 1

Nigon
12-04-2003, 11:46
VBMUSTDIE
Спасибо ! Я уже говорил что точно также уже сделал и уменя получилось, тобиш работает !
А вот так чтоб подключать просто include <iostream.h> не выходит !!!:(
ruslandh
1. Лежит он там где сказал VBMUSTDIE :
libstdc++-3~2-2.10.0.o лежит она в /usr/lib
2. Пользуюсь коммандой в терминале :
gcc test.cpp <= невыходит

gcc -c test.cpp //созд. обьектный файл <= выходит
gcc test.o -L./usr/lib -lstdc++ -o test //готово <= выходит
glassMonk
А у тя получилось ?
Dimon
Точно такойже как показал glassMonk

Dimon
12-04-2003, 17:05
Nigon

Да была идейка, что надо было прописать using namespace std и из-за этого баг, но потом проверил то, что посоветовал VBMUSTDIE с подключением lstdc++ и без и понял, что был неправ :gigi:  

glassMonk
13-04-2003, 07:11
Nigon
Нет неполучилось.
ALL
я просто ввел вот что
gcc c.cpp -lstdc++ и все откомпилило.
это как везде в linux он непонимал где это библиотека
указал все заработало.

Nigon
13-04-2003, 11:07
У меня еще вопрос, который может и не совсем по Linux :
#include <stdio.h>
#include <dlfcn.h>
int main(int argc, char* argv[]){
void *ext_library;// хандлер внешней библиотеки
double value=0;// значение для теста
double (*powerfunc)(double x);// переменная для хранения адреса функции
//загрузка библиотеки
ext_library = dlopen("/root/libpowers.so",RTLD_LAZY);
if (!ext_library){
//если ошибка, то вывести ее на экран
fprintf(stderr,"dlopen() error: %s\n", dlerror());
return 1;
};
//загружаем из библиотеки требуемую процедуру
powerfunc = dlsym(ext_library, argv[1]);
value=3.0;
//выводим результат работы процедуры
printf("%s(%f) = %f\n",argv[1],value,(*powerfunc)(value));
//закрываем библиотеку
dlclose(ext_library);
};

Что такое argc ? Мы это только обьявляем и нигде не используем !

Dimon
13-04-2003, 14:34
Nigon
argc, *argv[] - параметры командной строки. Ты откомпилил свою прогу и запускаешь её: 'program -p1 -p2' . Так вот, argc - это количество параметров командной строки ( в данном случае 3 - включая имя самой программы), а  - *argv[0], *argv[1], *argv[2] - соответсвенно указатели на эти параметры.

Nigon
13-04-2003, 19:56
Dimon
Спасибо !
"в данном случае 3 - включая имя самой программы"
А где выставляется то, что их 3 ?

ruslandh
14-04-2003, 07:17
В арgс :)

Добавлено:

Nigon
Еще один пост по программированию и тема уйдет в раздел программирования
PS надо было ее туда сразу перемещать.после 3-го поста :) Но шанс еще есть. :)

Dimon
14-04-2003, 17:48
Nigon
А где выставляется то, что их 3 ?
Сколько параметров в коммандной строке задашь - столько +1 и будет (за это отвечает ОС). Количество параметров - в argc  ( иногда расшифровывают так: argc - argument counter, argv - argument vector или argument value )
ruslandh
Сорри  :)

Kastor
15-04-2003, 11:46
Люди плеез подкиньте кто может ссылки по ресурсам о программировании под Линух.




© OSzone.net 2001-2012