Я пытаюсь сделать что-то жуткое здесь. Я пытаюсь писать программы на C++, скомпилированные с помощью GNU G++, но без зависимости от libstdc++ :) но, похоже, мне это нужно даже для самых простых вещей.
libstdС++ с настраиваемым набором функций был бы приемлем.
Я использую команду
g++ -nodefaultlibs -fno-rtti -fno-exceptions -lc
Без libstdС++ я получаю:
undefined reference to `operator delete(void*)'
undefined reference to `operator new(unsigned int)'
undefined reference to `vtable for __cxxabiv1::__class_type_info'
undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
undefined reference to `__cxa_pure_virtual'
Их нет в libc, так есть ли действительно легкая libstdС++, которая реализует именно эти вещи?
Мой тестовый код, который я хочу построить таким образом, в настоящее время выглядит так:
#include <stdio.h>
template <class T>
class X
{
public:
T a;
};
class A1
{
public:
virtual void f() = 0;
virtual ~A1() {}
};
class A2 : public A1
{
public:
virtual void f() {};
virtual ~A2() {}
};
class Y
{
public:
~Y() {}
};
int main()
{
X<int> A;
X<float> B;
Y *C = new Y;
A.a = 12;
B.a = 2.3;
printf("A: %d; B: %f\n", A.a, B.a);
A2 *a2 = new A2;
a2->f();
return 0;
}
operator new
, поскольку он, кажется, жалуется на выделение целых чисел, ноoperator delete
может быть немного сложным, если толькоvoid *
, который он хочет, не является просто областью malloc. Это оставило бы меня с vtables (чистый виртуальный тест — это просто запоздалая мысль, и я думаю, что могу просто сделать код хуже и добавить пустые встроенные тела в эти объявления) - person Radu C   schedule 15.09.2010make menuconfig
libstdc++, который люди использовали раньше (т. Е. Они знают, что он уже работает, вместо того, чтобы гадать и молиться). - person Radu C   schedule 17.09.2010