![]() |
Программеры, это наверное совсем уж детский вопрос.
Написал обыкновенную программу с применением 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" |
Вот буквально сегодня 15 минут грохнул на туже проблему.
Фишка в том что описание этих методов находятся не в библиотеке libc.o а в другой, и нужно явно указать какую библиотеку подключить. Точно не помню но помоему библиотека называется так libstdc++-3~2-2.10.0.o лежит она в /usr/lib Добавлено: Вот буквально сегодня 15 минут грохнул на туже проблему. Фишка в том что описание этих методов находятся не в библиотеке libc.o а в другой, и нужно явно указать какую библиотеку подключить. Точно не помню но помоему библиотека называется так libstdc++-3~2-2.10.0.o лежит она в /usr/lib |
Я взял и препил только что.
#include <istream.h> тоже самое, сегодня посмотрю днем что получится обязательно напишу. |
VBMUSTDIE
Я только начинаю программировать, по этому мне ниочень понятно - как это "указать" и "подключить" (покажите пожалуйста пример). glassMonk Только я подключал iOstream.h, хотя может нету разницы ? :biglaugh: Жду !!! |
Nigon
Установите libstdc++2.96-devel или libstdc++3.2-devel (в зависимости от Вашего gcc). |
Nigon
У тебя получилось? |
glassMonk
Да, но динамическую библиотекую я подключал после того как собрал обьектный файл.:biglaugh: А потом компиляция. А вот так чтоб подключять эту библиотеку в исходном коду - не получилось:( Добавлено: ruslandh Они у меня уже стоят и я их сейчас переставил заново с заменой чего тока можна. Результат такойже - пишет ошибку если подключать в исходном коду !!! (Я имею введу метод - #include <iostream.h>) |
Nigon
Можешь выложить текст программы? |
#include <iostream.h>
int main() { cout<<"Васька\n"; return 0; } |
1 А где у Вас лежит iostream.h ?
(можно конечно в include и полный путь задать, а можно и транслятору сказать) 2 Чем вы пользуетесь при компиляции ? |
Nigon
Пусть файл называется 1.cpp Тогда в коммандной строке пишешь gcc -c 1.cpp должен появиться файл 1.o далее gcc -o 1 1.o -lstdc++ если все правильно то должен появиться запускной файл 1 |
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 |
Nigon
Да была идейка, что надо было прописать using namespace std и из-за этого баг, но потом проверил то, что посоветовал VBMUSTDIE с подключением lstdc++ и без и понял, что был неправ :gigi: |
Nigon
Нет неполучилось. ALL я просто ввел вот что gcc c.cpp -lstdc++ и все откомпилило. это как везде в linux он непонимал где это библиотека указал все заработало. |
У меня еще вопрос, который может и не совсем по 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 ? Мы это только обьявляем и нигде не используем ! |
Nigon
argc, *argv[] - параметры командной строки. Ты откомпилил свою прогу и запускаешь её: 'program -p1 -p2' . Так вот, argc - это количество параметров командной строки ( в данном случае 3 - включая имя самой программы), а - *argv[0], *argv[1], *argv[2] - соответсвенно указатели на эти параметры. |
Dimon
Спасибо ! "в данном случае 3 - включая имя самой программы" А где выставляется то, что их 3 ? |
В арgс :)
Добавлено: Nigon Еще один пост по программированию и тема уйдет в раздел программирования PS надо было ее туда сразу перемещать.после 3-го поста :) Но шанс еще есть. :) |
Nigon
Цитата:
ruslandh Сорри :) |
Люди плеез подкиньте кто может ссылки по ресурсам о программировании под Линух.
|
пишеш "info libc" тут инфы столько что ты станеш кудесником программером.
а все остальное иши в посикавиках или на порталах(библиотеках) про linux. |
Kastor
Принциапиальный ответ по этому вопросу дан в официальном FAQ по Linux Программирования "под Linux" не бывает, бывает .. |
Время: 12:19. |
Время: 12:19.
© OSzone.net 2001-