Позволю себе небольшое отступление....
Дали мне на дипломную паботу робота Robotino (кому интересно сгуглите, ролики на you tube посмотрите). К нему существует API в виде исходников... но это другая история
на самом роботе (там стоит Debian Linux) есть уже скомпиленное API, я его к себе на комп подтянул через sftp и думал будет мне счастье... а нет...
Теперь к делу...
Само API в компилированном виде содержит три статические либы, librobotinocom.a libxtimer.a libxthread.a. они собраны под i386 архитектуру(проверял через objdump), что совместимо с моей (тож i386).
При сборке Hello world линковщик выдавал кучу неразрешенных внешних ссылок, причем в большинстве своем на std lib плюсов + еще куча других.
Тогда я решил распаковать статическую либу, достав тем самым оттуда объектные файлы, и собрать из них динамическую библиотеку.
В результате имеею librobotinocom.so libxtimer.so libxthread.so
Теперь при сборке проги остались ошибки, относящиеся только к stdc++
Код: Выделить всё
markeshov@markeshov-desktop:~/robotino/my/info$ g++ main.o -o info -L../../lib -lxtimer -lrobotinocom -lxthread -lpthread
../../lib/librobotinocom.so: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_create(unsigned int, std::allocator<char> const&)'
../../lib/librobotinocom.so: undefined reference to `std::basic_streambuf<char, std::char_traits<char> >::_M_out_cur_move(long)'
../../lib/librobotinocom.so: undefined reference to `std::__default_alloc_template<true, 0>::deallocate(void*, unsigned int)'
../../lib/librobotinocom.so: undefined reference to `std::__default_alloc_template<true, 0>::allocate(unsigned int)'
collect2: ld returned 1 exit statusсобственно мистика в чем заключается - другие программы с использованием stdc++ нормально компилируются и запускаются!
Я уже почти повесил руки... помоги мне, свежие и светлые головы!
С уважением, Дмитрий