LINUX.ORG.RU

Сообщения laban

 

STL и #include "" vs #include <>

Форум — Development

решил посмотреть пристальнее на STL (http://www.sgi.com/tech/stl/index.html)

читаю в их факе, что они не рекомендуют переписывать файлы вендора своими, но вместо этого сделать в makefile -Iпуть_к_новой_stl

делаю именно так и нифига не работает - просто по тупому не компиляется
(суть ошибок не важна - сейчас расскажу почему)

file1.h
#include "slist"

в makefile есть строка -Iproekt/inc/stl

slist
// bla-bla
#include <stl_sltst.h>

и вот на этом инклюде начинаются проблемы - угловые скобки, следовательно, инклюд системный (??) и ищется где-то в районе /usr/include/c++/3.2/ а это не совсем то место, которое мне надо, но там есть много другого, что мне (и не только мне) надо.
Короче, вопрос как можно отвязать системные инклюды от кастомизированных (и покдключать тот же stl по разным версиям)?

laban
()

__dso_handle undefined reference

Форум — Development

продолжаю экспериментировать с библиотеками (so) и С++.
добавляю в lib.cpp #include <iostream>. Компиляемся без проблем (но очень долго!!!).  Запускаю экзешник, который сразу вываливается с сообщением
relocation error: lib.so: undefined symbol: __dso_handle
смотрим, что слинковалось
$:ld lib.so

lib.so: the `gets' function is dangerous and should not be used.
ld: warning: cannot find entry symbol _start; not setting start address
lib.so: undefined reference to `__dso_handle'
lib.so: undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
lib.so: undefined reference to `operator delete(void*)'
lib.so: undefined reference to `__gxx_personality_v0'
lib.so: undefined reference to `_Unwind_Resume'
lib.so: undefined reference to `std::ios_base::Init::Init()'
lib.so: undefined reference to `vtable for __cxxabiv1::__class_type_info'lib.so: undefined reference to `std::ios_base::Init::~Init()'
lib.so: undefined reference to `operator new(unsigned)'

тихо фигею и лезу в гугл - о! флейм на gcc.gnu.org - чел пишет о такой же проблеме как и у меня, а в ответ невнятные рассуждения о ключах gcc и в конце концов, признание, мол, да проблема есть и мы ее пофиксили!
ставлю последние binutils (со всей байдой типа ld ar и прочей)  
К сожалению не помогает - проблема остается.

Кто уже сталкивался с подобной фигней? Как лечится (не надо говорить о том, что писать надо на Си)?
laban
()

undefined reference проблема

Форум — Development

может уже просто поздно и я устал? но сам я больше идей не имею

target_1 my_lib.so
собирается так
g++ -c -o my_lib.o my_lib.cpp -Imy_lib/inc -g
gcc -shared -o my_lib.so my_lib.o -L. -lpthread

все пучком

tagret_2 пускач
# должен брать одну функцию из библиотеки 
# брать в смысле ссылаться (без dlopen  и пр.)
g++ -c -o exec.o exec.cpp -Imy_lib/inc -g
g++ -o exec exec.o my_lib.so -L.

ругается на udefined reference в main
а в main я вызываю библиотечную функцию my_foo которая обюъявлена так
//lib.h
extern "C" int vla_bla(int arg);

//my_lib.cpp
#include "lib.h"
int vla_bla(int arg)
{return 0;}

смотрю objdump -t my_lib.so
а ьам имя декорировано всякой куйней... 
вопрос: 
1. почему имя функции декорированно (не смотря на extern "C")?
2. как сделать, чтоб работало? (простите за моветон)

чего я уже попробовал - разные объвления - результат одинаковый
у меня gcc 3.2 (linux 2.4.18 RH8.0)

laban
()

RSS подписка на новые темы