Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программное обеспечение Linux и FreeBSD (http://forum.oszone.net/forumdisplay.php?f=11)
-   -   Программирование в Линукс (http://forum.oszone.net/showthread.php?t=17179)

Nigon 07-04-2003 23:56 93282

Программеры, это наверное совсем уж детский вопрос.
Написал обыкновенную программу с применением 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 93283

Вот буквально сегодня 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 93284

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

Nigon 09-04-2003 19:44 93285

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

ruslandh 10-04-2003 03:44 93286

Nigon
Установите
libstdc++2.96-devel
или
libstdc++3.2-devel
(в зависимости от Вашего gcc).


glassMonk 10-04-2003 05:54 93287

Nigon
У тебя получилось?

Nigon 10-04-2003 19:43 93288

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


Добавлено:

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

Dimon 10-04-2003 23:46 93289

Nigon
Можешь выложить текст программы?

glassMonk 11-04-2003 02:13 93290

#include <iostream.h>
int main()
{
   cout<<"Васька\n";
   return 0;
}

ruslandh 11-04-2003 08:23 93291

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

netmax 11-04-2003 12:56 93292

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

Nigon 12-04-2003 11:46 93293

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 93294

Nigon

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


glassMonk 13-04-2003 07:11 93295

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

Nigon 13-04-2003 11:07 93296

У меня еще вопрос, который может и не совсем по 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 93297

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

Nigon 13-04-2003 19:56 93298

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

ruslandh 14-04-2003 07:17 93299

В арgс :)

Добавлено:

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

Dimon 14-04-2003 17:48 93300

Nigon
Цитата:

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

Kastor 15-04-2003 11:46 93301

Люди плеез подкиньте кто может ссылки по ресурсам о программировании под Линух.

glassMonk 16-04-2003 23:45 93302

пишеш "info libc" тут инфы столько что ты станеш кудесником программером.
а все остальное иши в посикавиках или на порталах(библиотеках) про linux.

ruslandh 17-04-2003 04:59 93303

Kastor
Принциапиальный ответ по этому вопросу дан в официальном FAQ по Linux
Программирования "под Linux" не бывает, бывает ..


Время: 12:19.

Время: 12:19.
© OSzone.net 2001-