Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > проблемы с поиском путей при компиляции


Автор: mantissa 29.4.2008, 14:51
Привет Великому ALL!!!

подскажите плиз, кто сталкивался как преодолеть:

gcc version 3.3.3 (SuSE Linux)  на строку : 
Код

#include <vector>

выдает :
In file included from ./../after_bl4_ZS.ec:6:        
../t_MT102.h:1:18: vector: No such file or directory 

в ".profile"  путь .....:/usr/include/g++:.:$PATH , где находится файл "vector" прописывал

как его заставить видеть пути к своим папкам?

Автор: JackYF 29.4.2008, 15:04
Хм... а покажи-ка командную строку вызова.

Кроме того, обновил бы ты GCC, старенькая больно версия у тебя.

Автор: mantissa 30.4.2008, 14:42
при проведении доп. тестов обнаружил, что если компилируемый файл в которов инклюдиться *.h с <vector> имеет расширение '.cpp', то gcc компилит, все находит и "на жизнь не жалуется", если же расширение просто '.c', то не находит...
эт ладно... переименую я необходимые файлы после "esql", но Линковщик то все равно чего-й то не находит:

/tmp/ccVj0PFw.o(.gnu.linkonce.t._ZNSt14__simple_allocIiSt24__default_alloc_templateILb1ELi0EEE8allocateEm+0x28): In function `std::__simple_alloc<int, std::__default_alloc_template<(bool)1, (int)0> >::allocate(unsigned long)':              
: undefined reference to `std::__default_alloc_template<(bool)1, (int)0>::allocate(unsigned long)'                                                              
/tmp/ccVj0PFw.o(.gnu.linkonce.t._ZNSt14__simple_allocIiSt24__default_alloc_templateILb1ELi0EEE10deallocateEPim+0x28): In function `std::__simple_alloc<int, std::__default_alloc_template<(bool)1, (int)0> >::deallocate(int*, unsigned long)': 
: undefined reference to `std::__default_alloc_template<(bool)1, (int)0>::deallocate(void*, unsigned long)'                                                     
/tmp/ccVj0PFw.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'  
collect2: ld returned 1 exit status                                             

Код

#include <vector>               
using namespace std;            
int main()                      
{                               
 vector <int> vI(15);           
 int    j = 0;                  
 j = vI.size();                 
 return 0;                      
}                               


наш админ по поводу поновейшей версии пробурчал чей-то невразумительное... впрочем на свой тестовый сервер могу поставить все, что угодно... что из нового и стабильного Вы мне порекомендуете?

спасибо за участие
с ув. BSD

Автор: Бонифаций 30.4.2008, 15:03
1) вы используете gcc или g++ для компиляции?
2) судя по заголовку это явно c++. ПОчему расширение .c ? Тогда нужно .cc или .cpp чтобы gcc понимал что это вы писали на  c++ а не на c.
3) у вас c++ дела все установлены? не помню как в suse, в дебианоподобных это libstdc++ пакет

Добавлено через 1 минуту и 19 секунд
а gcc у вас и правда... не новенький. Сейчас уж версия 4 во всю рулит

Автор: JackYF 30.4.2008, 17:52
Цитата(mantissa @  30.4.2008,  13:42 Найти цитируемый пост)
если же расширение просто '.c', то не находит...

Что весьма логично - нефиг давать файлам с исходниками на С++ расширение '.c'.

Автор: mantissa 1.5.2008, 15:00
Всем привет!

какая разница gcc как обзывается расширение у файла?
например у майкрософтовского компилятора (и 6.0 и .NET 2003) {кста.. эт ничего, что я тута чужих вспоминаю smile} таких заморочек нету... и ничего нелогичного он в этом не видит
после ESQL из файлов .ec получаются .c (в которых кстати куча C++ кода) и никаких проблем.... нормально компилирует

ну да ладно... извращюсь я и укажу ESQL-ю, чтобы он gcc не вызывал. Переименую все файлы в .cpp (раз gcc такой привередливый)...

но проблема у Линковщика... он не находит функций C++ в своих библиотеках, которыми gcc оперирует.... (вернее путей к библиотекам)...
или может подскажите какой ему параметр подсунуть, чтоб нашел...

с ув. BSD

Добавлено через 1 минуту и 32 секунды
или у 4-го таких проблем уже нету?

Автор: JackYF 1.5.2008, 15:14
Цитата(mantissa @  1.5.2008,  14:00 Найти цитируемый пост)
но проблема у Линковщика... он не находит функций C++ в своих библиотеках, которыми gcc оперирует.... (вернее путей к библиотекам)...
или может подскажите какой ему параметр подсунуть, чтоб нашел...

Ошибки засекречены или выдашь?

Автор: Бонифаций 2.5.2008, 04:15
еще раз:
1) компилируйте с помощью g++
2) проверьте что установлен libstdc++

Автор: mantissa 2.5.2008, 15:34
Всем привет!

<<<Ошибки засекречены или выдашь?>>>


smile так уже выкладывал ошибки на <vector> см сообщение от 30.4.2008, 14:42 чуть-чуть вышей smile
на class, string и т.д. сообщения немножко другие, но сути не меняет...

да libstdc++ установлена...

ВАУ! спасибо за инфу... g++ не только компилит, но и правильные пути линковщику задает, или вообще другой линковщик использует...


и напоследок, прежде чем тему закрыть... просветите меня плиз, зачем столько компиляторов разных...? я вроде читал, что у Linux-ов компилятор универсальный и один....
и почему на "cc", которую вызывает "esql" после обработки ".ec" файлов, ссылка на gcc стоит, а не на g++ ??

спасибо за помощь...
с ув. BSD

Автор: mantissa 8.5.2008, 15:28
Ok!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)