* [Comm] Компоновка с STL в gcc3
@ 2003-04-14 10:41 Прокопьев Евгений
2003-04-14 12:12 ` [Comm] " Sergey Vlasov
0 siblings, 1 reply; 6+ messages in thread
From: Прокопьев Евгений @ 2003-04-14 10:41 UTC (permalink / raw)
To: community
Здравствуйте!
Был проект, компилировавшийся без проблем в gcc2 от ALM 2.0. Теперь
компиляция тоже проходит без проблем, а при компоновке я получаю следующее:
$ make
g++ -c -o requester.o requester.cpp
g++ -c -o serial.o serial.cpp
g++ -c -o sulim.o sulim.cpp
gcc -o requester requester.o serial.o sulim.o xmlconfig/XMLConfig.o
-lstdc++ -lexpat
sulim.o: In function `std::basic_string<unsigned char,
std::char_traits<unsigned char>, std::allocator<unsigned char>
>::find(unsigned char const*, unsigned) const':
sulim.o(.gnu.linkonce.t._ZNKSbIhSt11char_traitsIhESaIhEE4findEPKhj+0xd):
undefined reference to `std::char_traits<unsigned char>::length(unsigned
char const*)'
sulim.o: In function `std::basic_string<unsigned char,
std::char_traits<unsigned char>, std::allocator<unsigned char>
>::find(unsigned char const*, unsigned, unsigned) const':
sulim.o(.gnu.linkonce.t._ZNKSbIhSt11char_traitsIhESaIhEE4findEPKhjj+0x4c):
undefined reference to `std::char_traits<unsigned
char>::compare(unsigned char const*, unsigned char const*, unsigned)'
...
collect2: ld returned 1 exit status
make: *** [requester] Ошибка 1
Куда копать?
--
С уважением, Прокопьев Евгений
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Comm] Re: Компоновка с STL в gcc3
2003-04-14 10:41 [Comm] Компоновка с STL в gcc3 Прокопьев Евгений
@ 2003-04-14 12:12 ` Sergey Vlasov
2003-04-14 12:52 ` Прокопьев Евгений
0 siblings, 1 reply; 6+ messages in thread
From: Sergey Vlasov @ 2003-04-14 12:12 UTC (permalink / raw)
To: community
On Mon, 14 Apr 2003 14:41:16 +0400
Прокопьев Евгений <john@rmts.donpac.ru> wrote:
> Был проект, компилировавшийся без проблем в gcc2 от ALM 2.0. Теперь
> компиляция тоже проходит без проблем, а при компоновке я получаю следующее:
>
> $ make
> g++ -c -o requester.o requester.cpp
> g++ -c -o serial.o serial.cpp
> g++ -c -o sulim.o sulim.cpp
> gcc -o requester requester.o serial.o sulim.o xmlconfig/XMLConfig.o
> -lstdc++ -lexpat
> sulim.o: In function `std::basic_string<unsigned char,
> std::char_traits<unsigned char>, std::allocator<unsigned char>
> >::find(unsigned char const*, unsigned) const':
> sulim.o(.gnu.linkonce.t._ZNKSbIhSt11char_traitsIhESaIhEE4findEPKhj+0xd):
> undefined reference to `std::char_traits<unsigned char>::length(unsigned
> char const*)'
> sulim.o: In function `std::basic_string<unsigned char,
> std::char_traits<unsigned char>, std::allocator<unsigned char>
> >::find(unsigned char const*, unsigned, unsigned) const':
> sulim.o(.gnu.linkonce.t._ZNKSbIhSt11char_traitsIhESaIhEE4findEPKhjj+0x4c):
> undefined reference to `std::char_traits<unsigned
> char>::compare(unsigned char const*, unsigned char const*, unsigned)'
> ...
> collect2: ld returned 1 exit status
> make: *** [requester] Ошибка 1
А если при сборке вызывать тоже g++, а не gcc?
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Comm] Re: Компоновка с STL в gcc3
2003-04-14 12:12 ` [Comm] " Sergey Vlasov
@ 2003-04-14 12:52 ` Прокопьев Евгений
2003-04-14 13:25 ` Sergey Vlasov
0 siblings, 1 reply; 6+ messages in thread
From: Прокопьев Евгений @ 2003-04-14 12:52 UTC (permalink / raw)
To: community
> А если при сборке вызывать тоже g++, а не gcc?
$ make clean
rm -f *.o requester
$ make
g++ -c -o requester.o requester.cpp
g++ -c -o serial.o serial.cpp
g++ -c -o sulim.o sulim.cpp
g++ -o requester requester.o serial.o sulim.o xmlconfig/XMLConfig.o
-lstdc++ -lexpat
sulim.o: In function `std::basic_string<unsigned char,
std::char_traits<unsigned char>, std::allocator<unsigned char>
>::find(unsigned char const*, unsigned) const':
sulim.o(.gnu.linkonce.t._ZNKSbIhSt11char_traitsIhESaIhEE4findEPKhj+0xd):
undefined reference to `std::char_traits<unsigned char>::length(unsigned
char const*)'
sulim.o: In function `std::basic_string<unsigned char,
std::char_traits<unsigned char>, std::allocator<unsigned char>
>::find(unsigned char const*, unsigned, unsigned) const':
sulim.o(.gnu.linkonce.t._ZNKSbIhSt11char_traitsIhESaIhEE4findEPKhjj+0x4c):
undefined reference to `std::char_traits<unsigned
char>::compare(unsigned char const*, unsigned char const*, unsigned)'
sulim.o: In function `std::basic_string<unsigned char,
std::char_traits<unsigned char>, std::allocator<unsigned char>
>::_Rep::_M_clone(std::allocator<unsigned char> const&, unsigned)':
sulim.o(.gnu.linkonce.t._ZNSbIhSt11char_traitsIhESaIhEE4_Rep8_M_cloneERKS1_j+0xaa):
undefined reference to `std::char_traits<unsigned char>::copy(unsigned
char*, unsigned char const*, unsigned)'
sulim.o: In function `std::basic_string<unsigned char,
std::char_traits<unsigned char>, std::allocator<unsigned char>
>::_M_mutate(unsigned, unsigned, unsigned)':
sulim.o(.gnu.linkonce.t._ZNSbIhSt11char_traitsIhESaIhEE9_M_mutateEjjj+0x143):
undefined reference to `std::char_traits<unsigned char>::copy(unsigned
char*, unsigned char const*, unsigned)'
sulim.o(.gnu.linkonce.t._ZNSbIhSt11char_traitsIhESaIhEE9_M_mutateEjjj+0x170):
undefined reference to `std::char_traits<unsigned char>::copy(unsigned
char*, unsigned char const*, unsigned)'
sulim.o(.gnu.linkonce.t._ZNSbIhSt11char_traitsIhESaIhEE9_M_mutateEjjj+0x283):
undefined reference to `std::char_traits<unsigned char>::move(unsigned
char*, unsigned char const*, unsigned)'
sulim.o: In function `std::basic_string<unsigned char,
std::char_traits<unsigned char>, std::allocator<unsigned char>
>::_S_copy_chars(unsigned char*, unsigned char const*, unsigned char
const*)':
sulim.o(.gnu.linkonce.t._ZNSbIhSt11char_traitsIhESaIhEE13_S_copy_charsEPhPKhS5_+0x1b):
undefined reference to `std::char_traits<unsigned char>::copy(unsigned
char*, unsigned char const*, unsigned)'
collect2: ld returned 1 exit status
make: *** [requester] Ошибка 1
--
С уважением, Прокопьев Евгений
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Comm] Re: Компоновка с STL в gcc3
2003-04-14 12:52 ` Прокопьев Евгений
@ 2003-04-14 13:25 ` Sergey Vlasov
2003-04-15 4:13 ` Прокопьев Евгений
0 siblings, 1 reply; 6+ messages in thread
From: Sergey Vlasov @ 2003-04-14 13:25 UTC (permalink / raw)
To: community
On Mon, 14 Apr 2003 16:52:46 +0400
Прокопьев Евгений <john@rmts.donpac.ru> wrote:
> sulim.o: In function `std::basic_string<unsigned char,
> std::char_traits<unsigned char>, std::allocator<unsigned char>
> >::find(unsigned char const*, unsigned) const':
> sulim.o(.gnu.linkonce.t._ZNKSbIhSt11char_traitsIhESaIhEE4findEPKhj+0xd):
> undefined reference to `std::char_traits<unsigned char>::length(unsigned
> char const*)'
[skip]
А, так вы пытаетесь работать с std::basic_string<unsigned char>.
Надо делать специализацию std::char_traits<unsigned char>. В
стандартном C++ <string> должен определять специализации только для
char и wchar_t - что он и делает в gcc3. Для общего случая
определяется только пустышка без реализации.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Comm] Re: Компоновка с STL в gcc3
2003-04-14 13:25 ` Sergey Vlasov
@ 2003-04-15 4:13 ` Прокопьев Евгений
2003-04-15 11:42 ` Sergey Vlasov
0 siblings, 1 reply; 6+ messages in thread
From: Прокопьев Евгений @ 2003-04-15 4:13 UTC (permalink / raw)
To: community
> А, так вы пытаетесь работать с std::basic_string<unsigned char>.
>
> Надо делать специализацию std::char_traits<unsigned char>. В
> стандартном C++ <string> должен определять специализации только для
> char и wchar_t - что он и делает в gcc3. Для общего случая
> определяется только пустышка без реализации.
$ make clean
rm -f *.o requester
$ make
g++ -c -o requester.o requester.cpp
g++ -c -o serial.o serial.cpp
g++ -c -o sulim.o sulim.cpp
sulim.cpp: In member function `void sulim_device::check(byte*, byte*,
byte*)':
sulim.cpp:70: no matching function for call to
`std::char_traits<byte>::append(byte*, int)'
sulim.cpp:72: no matching function for call to
`std::char_traits<byte>::find(byte*&)'
/usr/include/c++/3.2.1/bits/char_traits.h:79: candidates are: static
const _CharT* std::char_traits<_CharT>::find(const _CharT*, unsigned
int, const _CharT&) [with _CharT = byte]
sulim.cpp:72: `struct std::char_traits<byte>' has no member named `npos'
sulim.cpp:73: no matching function for call to
`std::char_traits<byte>::find(byte*&)'
/usr/include/c++/3.2.1/bits/char_traits.h:79: candidates are: static
const _CharT* std::char_traits<_CharT>::find(const _CharT*, unsigned
int, const _CharT&) [with _CharT = byte]
sulim.cpp:73: `struct std::char_traits<byte>' has no member named `npos'
sulim.cpp:78: no matching function for call to
`std::char_traits<byte>::length()'
/usr/include/c++/3.2.1/bits/char_traits.h:76: candidates are: static
size_t std::char_traits<_CharT>::length(const _CharT*) [with _CharT = byte]
sulim.cpp:79: no match for `byte_queue& [unsigned int&]' operator
sulim.cpp:84: no matching function for call to
`std::char_traits<byte>::find(byte*&)'
/usr/include/c++/3.2.1/bits/char_traits.h:79: candidates are: static
const _CharT* std::char_traits<_CharT>::find(const _CharT*, unsigned
int, const _CharT&) [with _CharT = byte]
sulim.cpp:84: `struct std::char_traits<byte>' has no member named `npos'
make: *** [sulim.o] Ошибка 1
Это случилось после того, как basic_string<unsigned char> я заменил на
char_traits<unsigned char>.
Собственно вопрос: где искать реализацию для char, чтобы методом
копировать/вставить/заменить сделать аналог (как-то все это не
по-человечьи), и где читать:
a) про реализацию стандарта C++ в gcc3
б) про саму стандартную библиотеку C++ (по C маны есть, а тут не
предусмотрели :( )
--
С уважением, Прокопьев Евгений
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Comm] Re: Компоновка с STL в gcc3
2003-04-15 4:13 ` Прокопьев Евгений
@ 2003-04-15 11:42 ` Sergey Vlasov
0 siblings, 0 replies; 6+ messages in thread
From: Sergey Vlasov @ 2003-04-15 11:42 UTC (permalink / raw)
To: community
On Tue, 15 Apr 2003 08:13:01 +0400
Прокопьев Евгений <john@rmts.donpac.ru> wrote:
> > А, так вы пытаетесь работать с std::basic_string<unsigned char>.
> >
> > Надо делать специализацию std::char_traits<unsigned char>. В
> > стандартном C++ <string> должен определять специализации только для
> > char и wchar_t - что он и делает в gcc3. Для общего случая
> > определяется только пустышка без реализации.
[куча ошибок поскипана]
> Это случилось после того, как basic_string<unsigned char> я заменил на
> char_traits<unsigned char>.
Так менять нельзя. Нужно написать где-то в своём .h специализацию
std::char_traits<unsigned char>; лучше там же определить и typedef на
std::basic_string<unsigned char>, чтобы нельзя было им пользоваться,
не объявив эту специализацию.
Т.е.
#include <string>
template <>
struct std::char_traits<unsigned char>
{
...
};
typedef std::basic_string<unsigned char> my_super_cool_string;
Можно явно указывать свой класс traits вторым параметром шаблона
std::basic_string.
> Собственно вопрос: где искать реализацию для char, чтобы методом
> копировать/вставить/заменить сделать аналог (как-то все это не
> по-человечьи),
/usr/include/c++/3.2.1/bits/char_traits.h
> и где читать:
>
> a) про реализацию стандарта C++ в gcc3
> б) про саму стандартную библиотеку C++ (по C маны есть, а тут не
> предусмотрели :( )
/usr/share/doc/gcc-3.2/libstdc++
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2003-04-15 11:42 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-04-14 10:41 [Comm] Компоновка с STL в gcc3 Прокопьев Евгений
2003-04-14 12:12 ` [Comm] " Sergey Vlasov
2003-04-14 12:52 ` Прокопьев Евгений
2003-04-14 13:25 ` Sergey Vlasov
2003-04-15 4:13 ` Прокопьев Евгений
2003-04-15 11:42 ` Sergey Vlasov
ALT Linux Community general discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
public-inbox-index community
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.community
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git